home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / macros / latex209 / contrib / custom-bib / babel.mbs (.txt) < prev    next >
LaTeX Document  |  1994-04-21  |  112KB  |  3,423 lines

  1. %\iffalse
  2. %/////////////////////////////////////////
  3. %   Generic bibliography style           /
  4. %   for both author-year and numerical   /
  5. %   for natbib, harvard, astron styles   /
  6. %   authordate, and apalike              /
  7. %   INTERNATIONAL VERSION for            /
  8. %     multiple languages                 /
  9. %/////////////////////////////////////////
  10. % This file is self-documenting: simply LaTeX it!
  11. %% (Here are the specifications of the source file)
  12. %<*selfdoc>
  13. \ifx\undefined\endoptions\def\next{%
  14.    \documentstyle[a4,11pt,doc]{article}%
  15.    \def\skipguard##1>{}\MakePercentIgnore\skipguard}\else\let\next\relax\fi
  16. \next
  17. %</selfdoc>
  18. %% \def\filename{babel.mbs}
  19. %% \def\filedate{1994 January 31}
  20. %% \def\fileversion{2.0}
  21. %  \def\docdate{1994 January 31}
  22. %\iffalse
  23. %   For use with docstrip to select various style parameters
  24. %   Default is an author-year bib style designed for my natbib.sty,
  25. %     which can also handle numerical citations.
  26. %%   For use with BibTeX version 0.99a or later, LaTeX version 2.09
  27. %%-------------------------------------------------------------------
  28. %% NOTICE:
  29. %% This file may be used for non-profit purposes.
  30. %% It may not be distributed in exchange for money, 
  31. %%   other than distribution costs.
  32. %%   
  33. %% The author provides it `as is' and does not guarantee it in any way.
  34. %% Copyright (C) 1994 Patrick W. Daly
  35. %% Max-Planck-Institut f\"ur Aeronomie
  36. %% Postfach 20
  37. %% D-37189 Katlenburg-Lindau
  38. %% Germany
  39. %% E-mail:
  40. %% SPAN--     nsp::linmpi::daly    (note nsp also known as ecd1)
  41. %% Internet-- daly@linmpi.dnet.gwdg.de   
  42. %%-----------------------------------------------------------
  43. %% \CharacterTable
  44. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  45. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  46. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  47. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  48. %%   Dollar        \$     Percent       \%     Ampersand     \&
  49. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  50. %%   Asterisk      \*     Plus          \+     Comma         \,
  51. %%   Minus         \-     Point         \.     Solidus       \/
  52. %%   Colon         \:     Semicolon     \;     Less than     \<
  53. %%   Equals        \=     Greater than  \>     Question mark \?
  54. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  55. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  56. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  57. %%   Right brace   \}     Tilde         \~}
  58. %^^A \CodelineIndex
  59. %^^A \RecordChanges
  60. % \OnlyDescription
  61. % \setcounter{StandardModuleDepth}{1}
  62. % \addtolength{\oddsidemargin}{1cm}
  63. % \begin{document}
  64. % \setcounter{GlossaryColumns}{2}
  65. % \setlength{\GlossaryMin}{10cm}
  66. % \changes{1.0}{1993 Aug 16}{Initial version}
  67. % \changes{2.0}{1994 Jan 31}{Add multilingual capabilities}
  68. % \pagestyle{headings}
  69. % \title{\bf A Generic Bibliographic Style File\\
  70. %             with Multilingual Applications}
  71. %    
  72. % \author{Patrick W. Daly\thanks{E-mail: {\tt daly@linax1.dnet.gwdg.de}}\\
  73. %         Max-Planck-Institut f\"ur Aeronomie\\
  74. %         D--37189 Katlenburg-Lindau, Germany}
  75. %         
  76. % \date{This paper describes file {\tt\lowercase\expandafter{\filename}},\\
  77. %  version \fileversion{} from \filedate{},\\
  78. %  documentation from \docdate.}
  79. % \maketitle
  80. % \MakeShortVerb{\|}
  81. % \parskip=1ex \parindent=0pt
  82. % \newcommand{\btx}{{\sc Bib}\TeX}
  83. % \section{Introduction}
  84. % This generic, or master, \btx{} style file is intended to be used with
  85. % {\tt docstrip} in order to produce actual {\tt.bst} files. By selecting
  86. % desired options, the output is customized to the particular requirements
  87. % needed.
  88. % The file has been assembled from Oren Patashnik's standard files {\tt
  89. % plain.bst} and {\tt unsrt.bst}, plus his non-standard file {\tt
  90. % apalike.bst}. This last is an author-year citation style, although
  91. % somewhat imperfect. I have added a number of other options and codings to
  92. % produce the features that I deem necessary.
  93. % The file now contains the possibility of changing languages. All explicit
  94. % words have been replaced by functions whose definitions may be altered in
  95. % the resulting {\tt.bst} file (less desirable method) or for which optional
  96. % definitions may be added in the master file as a new language option
  97. % (preferred method). Alternatively, one can select the `language' named
  98. % {\tt babel} and then \LaTeX{} commands are inserted for the explicit
  99. % words, the definitions of which must be contained in a file called {\tt
  100. % babelbst.tex}.
  101. % To produce a customized bibliographic style ({\tt.bst}) file from this
  102. % master file, simply \TeX{} or \LaTeX{} the `program' {\tt makebst.tex} or
  103. % {\tt makebst.doc}. When asked for the name of the master file, answer
  104. % with
  105. % \begin{quote}\tt\filename\end{quote}
  106. % and then reply to the questions in the following menus. The last question
  107. % is whether you want to generate the {\tt.bst} file right away. 
  108. % More details on this process and on the options available are to be found
  109. % in the rest of this article.
  110. % \section{About Master Bibliographic Style Files}
  111. % \subsection{The {\tt docstrip} Options}
  112. % This master file is a \btx{} bibliographic style file containing
  113. % alternative coding depending on {\tt docstrip} options. The options are
  114. % selected when {\tt docstrip} is run, either interactively or through a
  115. % batch job. 
  116. % Suppose that one of the options is called {\tt xyz}. Then the following
  117. % alternatives are possible:
  118. % \begin{quote}
  119. % |%<xyz> | \em one line of coding
  120. % \end{quote}
  121. % {\em includes\/} the single line of coding;
  122. % \begin{quote}
  123. % |%<!xyz> | \em one line of coding 
  124. % \end{quote}
  125. % {\em excludes\/} the single line;
  126. % \begin{quote}
  127. % |%<*xyz> | \\
  128. % {\em several lines of coding}\\
  129. % |%</xyz> | 
  130. % \end{quote}
  131. % {\em includes\/} all the bracketted lines;
  132. % \begin{quote}
  133. % |%<*!xyz> | \\
  134. % {\em several lines of coding}\\
  135. % |%</!xyz> | 
  136. % \end{quote}
  137. % {\em excludes\/} all the bracketted lines.
  138. % Options may be logically combined: the symbol \verb!|! is a logical {\sf
  139. % or}, |&| a logical {\sf and}, |!| a logical {\sf not}; parentheses {\tt(}
  140. % and {\tt)} may be used to group options.
  141. % \subsection{The {\tt docstrip} Batch Job}
  142. % In order to generate a true \btx{} style file with selected options from
  143. % this master file, it is necessary to run a {\tt docstrip} batch job.
  144. % Suppose that the master file is named {\tt master.mbs}, and the
  145. % resulting \btx{} style file is to be {\tt silly.bst}, and the batch job
  146. % file itself is called {\tt silly.drv}. To produce this with options, say,
  147. % {\tt xyz} and {\tt abc}, the batch job would look something like:
  148. % \begin{quote}\begin{verbatim}
  149. % \def\batchfile{silly.drv}
  150. % \input docstrip
  151. % \preamble
  152. % This is for Journal of Silly Results
  153. % \endpreamble
  154. % \postamble
  155. % End of customized bst file
  156. % \endpostamble
  157. % \keepsilent
  158. % \generateFile{silly.bst}{f}{\from{master.mbs}{xyz,abc}}
  159. % \end{verbatim}
  160. % \end{quote}
  161. % A preamble is not necessary, although it is advisable to include some
  162. % statement about the application of the bibliographic style. A postamble
  163. % {\em is\/} vital, otherwise the default will add |\endinput| at the end
  164. % of the file, something that \btx{} will not understand. The |\keepsilent|
  165. % is optional and just suppresses {\tt docstrip} output during processing.
  166. % \subsection{The {\tt makebst} Program}
  167. % The program {\tt makebst} simplifies the creation of the batch job file. To
  168. % do that, it needs information on the available options. This information
  169. % must be stored in a special format, either in the master file itself, or
  170. % in a file with the same root name but extension {\tt.opt}. The form of
  171. % this format is described in the documentation on {\tt makebst}.
  172. % In the master file, this information must be enclosed within {\tt docstrip}
  173. % options |%<*options>| \dots |%</options>| and {\em must\/} include an
  174. % |\endoptions| command. It may also include any number of comments. 
  175. % A sample menu in the master file to select one or none of options {\tt
  176. % xyz} {\em or\/} {\tt zyx} would look thus:
  177. % \begin{quote}\begin{verbatim}
  178. % %<*options>
  179. % \mes{Select one of these}
  180. % \optdef{f}{xyz}{Option forword}{to do forward stuff}
  181. % \optdef{r}{zyx}{Option reverse}{to do reverse stuff}
  182. % \optdef{*}{}{None of the above}{}
  183. % \getans
  184. % \endoptions
  185. % %</options>
  186. % %<*!options>
  187. % . . . . . . 
  188. % %</!options>
  189. % \end{verbatim}
  190. % \end{quote}
  191. % An explanation of these commands is to be found in the documentation on 
  192. % {\tt makebst}.
  193. % The menu information may be extracted from the master file by means of
  194. % {\tt docstrip} and stored in a file with extension {\tt.opt}. If this
  195. % file is missing, the program tries to read it from the master file.
  196. % (I do not actually recommend doing this; the information should come
  197. % from the true file and not from one that may have been edited)
  198. % \section{Multilingual Adaptation}
  199. % In the original {\tt.bst} files from Oren Patashnik, there are explicit
  200. % English words that are output into the final text. Since \LaTeX{} is
  201. % increasingly being used for other languages, and since the official
  202. % version since December 1991 also uses macros in place of explicit words,
  203. % it seems appropriate for \btx{} to follow suit.
  204. % In this master bibliographic style file {\tt\filename}, all explicit
  205. % words have been replaced by functions: e.g., the word `editor' has become
  206. % the function {\tt bbl.editor}. Depending on the language option chosen,
  207. % this function is defined to be the text {\tt"editor"}, {\tt"Redakteur"},
  208. % or {\tt"redacteur"}, for English, German, and French, respectively. 
  209. % There is another special `language' called {\tt babel} that instead inserts
  210. % the text |"\bbleditor{}"|; the definitions of these \LaTeX{} commands
  211. % must be in a separate file named {\tt babelbst.tex} that is read in at
  212. % the start of the bibliography.
  213. % There are thus two ways of generating a {\tt.bst} file for a given
  214. % language:
  215. % \begin{enumerate}
  216. % \item \label{one} 
  217. %   Select one of the allowed {\tt docstrip} language options (see
  218. %   page~\pageref{babelopt}) or {\tt makebst} language menu choices
  219. %   (page~\pageref{babelmenu}) for a {\tt.bst} file that is valid for that
  220. %   language only.
  221. % \item \label{two}
  222. %   Select the language {\tt babel} and then edit the file {\tt
  223. %   babelbst.tex} to contain the desired translations, whereby 
  224. %   a number of languages might be included in it with switching
  225. %   according to some criterion.
  226. % \end{enumerate}
  227. % I am uncertain as to which is the better method. With \ref{one}, the
  228. % {\tt.bst} file is complete on its own, but a different file must be
  229. % generated for every language. This is probably necessary anyway since the
  230. % bibliography style might be language dependent. Articles in English would
  231. % have a different argument to the |\bibliographystyle| command from those
  232. % in other languages. So what? Languages cannot really be switched so
  233. % easily as an option in |\documentstyle|. The disadvantage is that the
  234. % addition of further languages is somewhat complicated and the master file
  235. % could grow to a very large size, slowing down the {\tt docstrip} processing.
  236. % Method \ref{two} produces a single {\tt.bst} file for all languages, the
  237. % differences appearing only in the file {\tt babelbst.tex}. This makes it
  238. % easier to add new languages. However, unless the user is working
  239. % exclusively in one language, he will need some kind of switching method.
  240. % Most language installations provide tests for the current language, and
  241. % these would have to be built into the {\tt babelbst.tex} file.
  242. % \subsection{Adding New Languages to the Master File}
  243. % To add a new language to this master file, changes must be made at 6
  244. % places, all of which are marked with the text {\tt NEWLANGUAGE:}. You
  245. % only need to search for these and follow the instructions there, also
  246. % looking at the existing languages as examples.
  247. % Let us suppose the language Newl is to be added with the {\tt docstrip}
  248. % option name {\tt newlang}.
  249. % \begin{enumerate}
  250. % \item
  251. %   Add an entry in the description of the options. This will appear as
  252. %   \begin{quote}
  253. %     \verb!% \item[newlang]      the equivalent Newl words;!
  254. %   \end{quote}
  255. % \item
  256. %   Add the option to the {\tt makebst} language menu. This will be like
  257. %   \begin{quote}
  258. %   \verb!\optdef{x}{newlang}{Newl}{}!
  259. %   \end{quote}
  260. %   where {\tt x} stands for some unique letter within the menu.
  261. % \item
  262. %   Add a headline for the {\tt.bst} file that states right at the start
  263. %   for which language it is intended.
  264. %   \begin{quote}
  265. %   \verb!%<newlang> %                NEWL!
  266. %   \end{quote}
  267. % \item
  268. %   Now for the hard part. Add all the translations for {\tt bbl.and} etc.
  269. %   Follow the models shown. The addition should be something like
  270. %   \begin{quote}\small
  271. % \verb!% The Newl translations !\\
  272. % \verb!%    \begin{macrocode}!\\
  273. % \verb!%<*newlang>!\\
  274. % \verb! % The language selected is NEWL!\\
  275. % \verb!FUNCTION {bbl.and}!\\
  276. % \verb!{ "ee"}!\\
  277. % \verb!. . . . . . . . . . . . . .!\\
  278. % \verb!FUNCTION {bbl.fifth}!\\
  279. % \verb=%<!ord>{ "Frotty" }=\\
  280. % \verb!%<ord>{ "5-y" }!\\
  281. % \verb! !\\
  282. % \verb!FUNCTION {bbl.th}!\\
  283. % \verb!{ "-y" }!\\
  284. % \verb! !\\
  285. % \verb!%</newlang>!\\
  286. % \verb!%    \end{macrocode}!
  287. %   \end{quote}
  288. % \item
  289. %   A similar addition is made for the names of the months.
  290. % \item
  291. %   There could be some problems with edition numbers due to language
  292. %   dependent ways of treating ordinal numbers (1st, 2nd, 3rd in English;
  293. %   1$^{\mbox{\scriptsize re}}$, 2$^{\mbox{\scriptsize e}}$, 
  294. %   3$^{\mbox{\scriptsize e}}$ in French; 1., 2., 3., in German). Some
  295. %   accommodation already exists for the oddball language English, and
  296. %   further hacking may be needed for others.
  297. % \item
  298. %   Finally, if there should be any need for a double-quote character in
  299. %   the translations (German needs it for umlauts) then there is trouble
  300. %   because the \btx{} strings do not allow it. Instead, use the command
  301. %   |\qq|, as in the German word |F\qq{u}nfte| for {\sl F\"unfte} (fifth).
  302. %   This command must then be defined for the source text, by adding its
  303. %   definition to the start of the {\tt.bbl} file. The function {\tt
  304. %   begin.bib} already includes this for the {\tt german} option, which may
  305. %   be added in the same manner for other languages.
  306. % \end{enumerate}
  307. % \subsection{Changing {\tt babelbst.tex} for New Languagues}
  308. % If the above is too complex, then a new language can be added by
  309. % modifying the file {\tt babelbst.tex} and selecting the language {\tt
  310. % babel} for the {\tt.bst} file. If this is the only language to be used,
  311. % then just change the English words in the definitions. 
  312. % However, some form of switching would be more desirable. With \TeX\
  313. % version 3, there is a |\language| parameter to control the hyphenation
  314. % patterns, and this could be used to select the correct language. For
  315. % example, if language 0 is English and language 1 Newl, then put the
  316. % English version of {\tt babelbst.tex} into {\tt englbst.tex} and the Newl
  317. % version in {\tt newlbst.tex}. Then {\tt babelbst.tex} could contain:
  318. % \begin{quote}\begin{verbatim}
  319. % \ifcase\language \input{englbst} \or \input{newlbst} 
  320. %   \else \input{newlbst} \fi
  321. % \end{verbatim}
  322. % \end{quote}
  323. % This is of course installation dependent. 
  324. % \subsection{A Compromise Method of Adding a Language}
  325. % A third method is a mix between the above two and requires some hacking
  326. % on the part of the user. 
  327. % \begin{enumerate}
  328. % \item 
  329. %   Make up a file like {\tt babelbst.tex} for the new language, say {\tt
  330. %   newlbst.tex}. 
  331. % \item 
  332. %   Generate a {\tt.bst} file with the {\tt babel} language option.
  333. % \item
  334. %   Go to the line near the end of the {\tt.bst} file and replace
  335. %   \begin{quote}\verb!\input{babelbst.tex}! with
  336. %                \verb!\input{newlbst.tex}!
  337. %   \end{quote}
  338. % \end{enumerate}
  339. % The resulting {\tt.bst} file is valid for one language only (as for
  340. % method \ref{one}), and its name should reflect this.
  341. % \subsection{Extracting Sample {\tt babelbst.tex} Files}
  342. % Language dependent definition files suitable to be used as {\tt
  343. % babelbst.tex}, or to be read in by it, are contained in this master file
  344. % for English, German, and French. Extract them with {\tt docstrip} and the
  345. % options {\tt bblbst,english}, {\tt bblbst,german}, and {\tt
  346. % bblbst,french}.
  347. % \subsection{Problem with Edition Numbers}
  348. % Something to note here is the ordinal numbers for editions. \btx{}
  349. % demands that the field {\tt edition} be given in the database as a word
  350. % `First', `Second', etc., or as `1st', `2nd', etc. This is bad policy
  351. % because it is language dependent. So what I do is to test for the words
  352. % `first' through `fifth' (case independently) and replace them with
  353. % language-dependent equivalents. If the {\tt<ord>} option is selected,
  354. % these equivalents are ordinal numbers for that language. Any other words
  355. % cannot be interpreted and must be printed as is. 
  356. % However, if the {\tt edition} is given as a number, with or without
  357. % following letters, then the numbers 1 through 5 are replaced by their
  358. % words; any higher numbers just have the ordinal ending (`th' in English)
  359. % added to them. 
  360. % These numbers are only used with the word
  361. % `edition' or its equivalent in other languages, so the translators need
  362. % to provide only the one gender, e.g., feminine for both German and
  363. % French.
  364. % \section{The Options}
  365. % Here I present a list of all the {\tt docstrip} options that are
  366. % available in this file {\tt\filename}.
  367. % The normal user can skip this section since he will probably make use
  368. % of the menus via {\tt makebst}. These are described in
  369. % Section~\ref{sec:menu}. The menus provide much more informative prompts
  370. % than the heavily abbreviated option names listed here. In other words,
  371. % the options described in this section are meant for internal (programmer)
  372. % usage, while the normal interface for the user is the menus.
  373. % I have tried to avoid
  374. % conflicts with mutually exclusive options by always letting one dominate.
  375. % For example, if {\tt a} and {\tt b} are to be mutually exclusive, then
  376. % the three possibilities are:
  377. % \begin{quote}\begin{tabular}{rl}
  378. % neither &  \tt\%<!a\&!b> \\
  379. % {\tt a} only & \tt\%<a> \\
  380. % {\tt b} only & \tt\%<!a\&b>
  381. % \end{tabular}\end{quote}
  382. % so that if both {\tt a} and {\tt b} have been selected, the result is as
  383. % if only {\tt a} had been given. (If one uses {\tt makebst} to produce the
  384. % {\tt docstrip} batch job, then it is impossible to give mutually
  385. % exclusive options.)
  386. % Most mutually exclusive options have the same prefix before the hyphen.
  387. % \newenvironment{opt}{%
  388. % \begin{list}{}{\labelwidth2cm \leftmargin2.5cm \labelsep1em \rightmargin0pt
  389. %  \def\makelabel##1{\tt ##1 \hfill}}}{\end{list}}
  390. % {\bf Citation style:} whether or not a numerical or author-year system 
  391. % is to be used.
  392. % \begin{opt}
  393. % \item[--] default is numerical, standard \LaTeX, as for {\tt
  394. %           plain.bst}.\\
  395. %           |\bibitem{key}...|
  396. % \item[cite] special for listing entire databases; the cite key is used 
  397. %             as the label so it may be listed.\\
  398. %             |\bibitem[key]{key}...|
  399. % \item[ay] for author-year style of citations. Various forms of |\bibitem|
  400. %           are provided under this option, to support different types
  401. %           of \LaTeX{} styles for interfacing with the author-year system.
  402. % \end{opt}
  403. % If {\tt ay} has been selected, then the type of author-year interface
  404. % is selectable.
  405. % \begin{opt}
  406. % \item[--] default is the system I invented for my {\tt natbib.sty}.\\
  407. %            |\bibitem[author(year)]{key}...|   
  408. % \item[alk] for the {\tt apalike.sty} of Oren Patashnik and related
  409. %            systems\\
  410. %            |\bibitem[author, year]{key}...|
  411. % \item[har] for the Harvard family of styles (with {\tt harvard.sty}).\\
  412. %            |\harvarditem[short]{long}{year}{key}...|
  413. % \item[ast] for astronomy family of styles (with {\tt astron.sty}).\\
  414. %            |\bibitem[\protect\astroncite{author}{year}]{key}...|
  415. % \item[cay] for the Chicago family of styles (with {\tt chicago.sty}).\\
  416. %            |\bibitem[\protect\citeauthoryear{long}{short}{year}]{key}...|
  417. % \item[cn] for the ``author-date'' group of styles (with {\tt
  418. %            authordate1-4.sty})\\
  419. %            |\bibitem[\protect\citename{author, }year]{key}...|
  420. % \end{opt}
  421. % {\bf Sequence:} the order in which the references are listed.
  422. % \begin{opt}
  423. % \item[--]      default is alphabetical by all authors, date, title
  424. % \item[seq-no]  (numerical only) sequence by citation order
  425. % \item[seq-lab] (author-year) by label, date, title (means that Daly 
  426. %                precedes Daly and Williams, precedes Daly et al.)
  427. % \end{opt}
  428. % {\bf Language selection:} the translations of certain explicit words.
  429. % \label{babelopt}
  430. %^^A NEWLANGUAGE: add an \item here, say \item[newlang]
  431. % \begin{opt}
  432. % \item[english]   English, for `and', `chapter', `editor', etc';
  433. % \item[german]    the equivalent German words;
  434. % \item[french]    the equivalent French words;
  435. % \item[espo]      the equivalent Esperanto words;
  436. % \item[babel]     replace words with \LaTeX{} commands that are defined 
  437. %                  in the file {\tt babelbst.tex};
  438. % \item[{\em??}]   whatever other languages have been added.
  439. % \end{opt}
  440. % \begin{quote}\sl Warning: {\bf There is no default language!} One of the 
  441. % above options must be given.
  442. % \end{quote}
  443. % {\bf Names formatting:} how initials and surnames are to be combined.
  444. % \begin{opt}
  445. % \item[--]       default is full names, given names first
  446. % \item[nm-init]  initials plus surname
  447. % \item[nm-rev]   surname plus initials
  448. % \item[nm-rev1]  surname plus initials (1st name only) then initials 
  449. %                 plus surname
  450. % \item[nm-rv]    as {\tt nm-rev}, but initials without dots
  451. % \end{opt}
  452. % {\bf Number of names:} normally all names listed (in reference list)
  453. % \begin{opt}
  454. % \item[nmlm]     limit number of names
  455. % \item[x1...x9]  (with {\tt nmlm}) maximum number of names to appear
  456. % \item[m1...m5]  (with {\tt nmlm}) minimum number before `et al' written;
  457. %                 no check for consistency is taken; one {\tt x} and 
  458. %                 one {\tt m} number must be given, and {\tt x}$\le${\tt m}
  459. % \end{opt}
  460. % {\bf Names font:} in the reference list
  461. % \begin{opt}
  462. % \item[--]       default is names in normal type face
  463. % \item[nmft-sc]  names in small caps
  464. % \item[nmft-it]  names in italics   
  465. % \item[nmft-bf]  names in bold      
  466. % \end{opt}
  467. % {\bf Block punctuation:} between logical sections (not mutually
  468. % exclusive)
  469. % \begin{opt}
  470. % \item[--]       default is period after each logical section, including end
  471. % \item[blk-com]  use commas, except at very end (changes `In' to `in')
  472. % \item[blk-tit]  use commas, except after a title and very end
  473. % \item[in-col]   puts a colon after `In' or `in' for edited works
  474. % \item[fin-bare] no punctuation at the very end
  475. % \end{opt}
  476. % {\bf Date:} position and enclosure
  477. % \begin{opt}
  478. % \item[--]       default is date at end, before notes; for author-year,
  479. %                   date consists only of year, no month
  480. % \item[dt-beg]   date goes after authors' names (author-year only)
  481. % \item[dt-end]   date goes after any notes
  482. % \item[yr-par]   no month, year in parentheses ()
  483. % \item[yr-brk]   no month, year in brackets []
  484. % \item[yr-col]   no month, year preceded by colon and space
  485. % \end{opt}
  486. % {\bf Article in journal:} style of title, volume, pages
  487. % \begin{opt}
  488. % \item[--]       default is: Title. {\it Journal}, vol(num):p1--p2
  489. % \item[vol-bf]   volume in bold
  490. % \item[vol-it]   volume in italics
  491. % \item[vol-2bf]  volume and number bold
  492. % \item[volp-com] comma and space instead of colon:   vol(num), p1--p2
  493. % \item[jpg-1]    only starting page given
  494. % \item[jnm-x]    no punctuation after journal name
  495. % \item[tit-it]   article title in italics
  496. % \item[tit-q]    article title in single quotes
  497. % \item[tit-qq]   article title in double quotes
  498. % \item[jtit-x]   no article title (applies only to journals and 
  499. %                 collections)
  500. % \item[atit-u]   article title capitalized as in entry, default is
  501. %                 sentence capitalization (first word and words following
  502. %                 colons)
  503. % \end{opt}
  504. % {\bf Thesis title:} formatted like a book or article
  505. % \begin{opt}
  506. % \item[--]       default is like a book title
  507. % \item[thtit-a]  titles of PhD and Master theses formatted like articles
  508. % \end{opt}
  509. % {\bf Book title:} font style
  510. % \begin{opt}
  511. % \item[--]       default is italicized
  512. % \item[btit-rm]  book title plain
  513. % \end{opt}
  514. % {\bf Abbreviations:} of various words, default is no abbreviations
  515. % \begin{opt}
  516. % \item[pp]       abbreviate `page(s)' as `p.' and `pp.'
  517. % \item[ed]       abbreviate `editor(s)' as `ed.' and `eds.'
  518. % \item[abr]      abbreviate `volume', `edition', `technical report', etc.
  519. % \item[ord]      write edition numbers as 1st, 2nd, instead as words.
  520. % \end{opt}
  521. % {\bf Editor:} alternative for {\em in edited\/} work
  522. % \begin{opt}
  523. % \item[--]       in {\em names\/}, editors, {\em title}
  524. % \item[edby]     in {\em title\/}, edited by {\em names}
  525. % \end{opt}
  526. % {\bf Citation label:} what is written by the |\cite| command
  527. % \begin{opt}
  528. % \item[--]       default is no special font
  529. % \item[lab-it]   label (names printed by |\cite|) in italics
  530. % \item[xlab-it]  extra label (letter after year) in italics
  531. % \end{opt}
  532. % {\bf Emphasis:} defines what `italicized' really means
  533. % \begin{opt}
  534. % \item[--]       default is |\em| (can switch between |\it| 
  535. %                 and |\rm|
  536. % \item[em-it]    use |\it| instead (always italic)
  537. % \item[em-x]     no emphasis
  538. % \end{opt}
  539. % {\bf Special punctuation:} 
  540. % \begin{opt}
  541. % \item[amper]    use \& in place of `and'
  542. % \item[and-xcom] no comma before last `and' of an author list
  543. % \item[and-com]  add comma before `and' even for two authors
  544. % \item[and-x]    no `and' in an author list (in list of references)
  545. % \item[etal-it]  `et al.' in italics
  546. % \end{opt}
  547. % \section{The Menu Information}\label{sec:menu}
  548. % Here I describe the options and menu information for this particular
  549. % master file {\tt\filename}. To construct a {\tt docstrip} driver file
  550. % to generate a desired {\tt.bst} file, simply process {\tt makebst.tex}
  551. % (or {\tt makebst.doc}) with \TeX, and give 
  552. % \begin{quote}\tt\filename\end{quote}
  553. % when prompted for the name of the master file. Then answer the questions
  554. % in the menus that follow. The menu information is extracted from here.
  555. % All this menu information is nested between {\tt docstrip} guard options
  556. % |%<*options>| \dots\ |%</options>|, and the last command is
  557. % |\endoptions|. The rest of the file is nested between |%<*!options>|
  558. % \dots\ |%</!options>| in order to exclude it if {\tt docstrip} is used to
  559. % extract only the menu information.
  560. % \subsection*{Author-year or numerical}
  561. % The first question is whether a numerical or author-year citation style
  562. % is to be used. If the latter, the supporting system is my {\tt
  563. % natbib.sty}, which expects |\bibitem| to have an optional argument
  564. % containing the short form of the authors, plus year in parentheses.
  565. % E.g.,
  566. % \begin{quote}
  567. % |\bibitem[Daly et al.(1990)]{key}...|
  568. % \end{quote}
  569. % Other systems are also supported, such as the Harvard family of
  570. % bibliography styles (with {\tt harvard.sty}), which have entries in the
  571. % form
  572. % \begin{quote}
  573. % |\harvarditem[Daly et al.]{Daly, Keppler,|\\
  574. % |       and Williams}{1990}{key}...|
  575. % \end{quote}
  576. % or the astronomy family (with {\tt astron.sty}) with entries like
  577. % \begin{quote}
  578. % |\bibitem[\protect\astroncite{Daly et al.}{1990}]{key}...|
  579. % \end{quote}
  580. % or the Chicago family (with {\tt chicago.sty}) with entries like
  581. % \begin{quote}
  582. % |\bibitem[\protect\citeautheryear{Daly, Keppler, and|\\
  583. % |      Williams}{Daly et al.}{1990}]{key}...|
  584. % \end{quote}
  585. % or the so-called ``author-date'' group (with {\tt authordate1-4.sty})
  586. % with entries of the form
  587. % \begin{quote}
  588. % |\bibitem[\protect\citename{Daly et al.}1990]{key}...|
  589. % \end{quote}
  590. % Finally, there is the {\tt apalike} format of Oren Patashnik, for use
  591. % with {\tt apalike.sty} that has entries of the form
  592. % \begin{quote}
  593. % |\bibitem[Daly et al., 1990]{key}...|
  594. % \end{quote}
  595. % In addition to numerical or author-year citation styles, there is also a
  596. % {\tt cite} style available in which the label is the same as the cite
  597. % key. This is for listing entire contents of databases with the cite key
  598. % visible. 
  599. % A flag |\ifnumerical| is established because some of the following menu
  600. % features depend on which system is to be used.
  601. %    \begin{macrocode}
  602. %<*options>
  603. \newif\ifnumerical \numericalfalse
  604. \mes{^^JSTYLE OF CITATIONS:}
  605. \optdef{*}{}{Numerical}{as in standard LaTeX}
  606. \optdef{a}{ay}{Author-year}{with some non-standard interface}
  607. \optdef{c}{cite}{Cite key}{(special for listing contents of bib file)}
  608. \getans
  609. \numericaltrue
  610. \if\ans a\numericalfalse\fi
  611. \ifnumerical\else
  612. \mes{^^JAUTHOR-YEAR SUPPORT SYSTEM:}
  613. \optdef{*}{}{Natbib}{for use with natbib.sty}
  614. \optdef{l}{alk}{Apalike}{for use with apalike.sty}
  615. \optdef{h}{har}{Harvard}{system with harvard.sty}
  616. \optdef{a}{ast}{Astronomy}{system with astron.sty}
  617. \optdef{c}{cay}{Chicago}{system with chicago.sty}
  618. \optdef{d}{cn}{Author-date}{system with authordate1-4.sty}
  619. \getans\fi
  620. %    \end{macrocode}
  621. % \subsection*{Ordering of the listed references}
  622. %   Choices here depend on citation style. The default in both cases is
  623. % alphabetical order of all authors. For numerical style, one may also
  624. % choose an unsorted order, which means the order the same as the original
  625. % citations. This corresponds to {\tt unsrt.bst}.
  626. % For author-year, the second choice is by label. (The label is the
  627. % optional |\bibitem| argument, and is what is printed in place of the
  628. % |\cite| command.) With this option, all the papers with the same first
  629. % author are ordered so that the one-author papers come first, followed by
  630. % the two-author papers, followed by the multiple-author papers. This is a
  631. % more sensible system for author-year citations, and is demanded by some
  632. % journals (like JGR).
  633. %    \begin{macrocode}
  634. \ifnumerical
  635. \mes{^^JORDERING OF REFERENCES:}
  636. \optdef{*}{}{Alphabetical}{by all authors}
  637. \optdef{c}{seq-no}{Citation order}{(unsorted, like unsrt.bst)}
  638. \getans
  639. \else
  640. \mes{^^JORDERING OF REFERENCES:}
  641. \optdef{*}{}{Alphabetical}{by all authors}
  642. \optdef{l}{seq-lab}{By label}%
  643.    {(Jones before Jones and James before Jones et al)}
  644. \getans
  645. %    \end{macrocode}
  646. % \subsection*{Selecting Language}\label{babelmenu}
  647. % Explicit words in the bibliography style, such as `and', `editor', etc.,
  648. % are represented by functions {\tt bbl.and}, {\tt bbl.editor}, and so on.
  649. % By default these functions translate to the normal English text, but
  650. % other languages are also possible. All the definitions of these functions
  651. % are kept together to simplify the addition of further languages, or to
  652. % allow someone to hack the {\tt.bst} file for another language.
  653. %^^A NEWLANGUAGE: add an \optdef here, 
  654. %^^A              say \optdef{x}{newlang}{Name of Language}{}
  655. %^^A              where newlang is to be the docstrip option name
  656. %    \begin{macrocode}
  657. \mes{^^JLANGUAGE:}
  658. \optdef{*}{english}{English}{}
  659. \optdef{b}{babel}{Babel}{, word definitions to be found in babelbst.tex}
  660. \optdef{g}{german}{German}{}
  661. \optdef{f}{french}{French}{}
  662. \optdef{e}{espo}{Esperanto}{}
  663. \getans
  664. %    \end{macrocode}
  665. % \subsection*{Formatting author names}
  666. % The default is that the full names of the authors are listed, given names
  667. % first, unabbreviated. Of course, if only the initials have been given in
  668. % the {\tt.bib} file, then that is all that can appear in the list. Other
  669. % possibilities are to use initials (even if full names in the {\tt.bib}
  670. % file) either before or after the surnames. A specialty of the journals of
  671. % the American Geophysical Union is to have only the first name with
  672. % reversed initials.
  673. %    \begin{macrocode}
  674. \mes{^^JAUTHOR NAMES:}
  675. \optdef{*}{}{Full, surname last}{(John Frederick Smith)}
  676. \optdef{i}{nm-init}{Initials + surname}{(J. J. Smith)}
  677. \optdef{r}{nm-rev}{Surname + initials}{(Smith, J. J.)}
  678. \optdef{s}{nm-rv}{Surname + dotless initials}{(Smith JJ)}
  679. \optdef{a}{nm-rev1}{Only first name reversed}%
  680.    {(AGU style: Smith, J. J., H. K. Jones)}
  681. \getans
  682. %    \end{macrocode}
  683. % \subsection*{Number of authors}
  684. % Normally the complete list of authors as given in the {\tt.bib} file are
  685. % presented in the reference list. However, some journals prefer to limit
  686. % them to a maximum. If there are more than this maximum number of author
  687. % names, then a minimum number plus `et al.' are listed.
  688. % Because no test for consistency of the numbers is carried out in the
  689. % {\tt.bst} file itself (it might be possible, but I found it too complex),
  690. % this is done here.
  691. %    \begin{macrocode}
  692. \mes{^^JNUMBER OF AUTHORS:}
  693. \optdef{*}{}{All authors}{included in listing}
  694. \optdef{l}{nmlm}{Limited authors}{(et al replaces missing names)}
  695. \getans
  696. \if\ans l
  697. \loop
  698.   \ask{\num}{Maximum number of authors (1-9)}
  699.   \ifnum\num>9
  700.   \mes{*** Must be between 1 and 9}
  701. \repeat
  702. \wr{\spsp\spsp\sep x\num\pc: Maximum of \num\space authors}
  703. \mes{\spsp You have selected maximum \num\space authors}
  704. \ifnum\num>5\def\numx{5}\else\edef\numx{\num}\fi
  705. \loop
  706.   \ask{\num}{Minimum number (before et al given) (1-\numx)}
  707.   \ifnum\num>\numx
  708.   \mes{*** Must be between 1 and \numx}
  709. \repeat
  710. \wr{\spsp\spsp\sep m\num\pc: Minimum of \num\space authors}
  711. \mes{\spsp You have selected minimum \num\space authors}
  712. %    \end{macrocode}
  713. % \subsection*{Type face of names}
  714. % The author names in the list of references normally appear in the current
  715. % type face. This may be changed to small caps, bold, or italics.
  716. %    \begin{macrocode}
  717. \mes{^^JTYPEFACE FOR AUTHORS:}
  718. \optdef{*}{}{Normal font for authors}{}
  719. \optdef{s}{nmft-sc}{Small caps authors}{(\string\sc)}
  720. \optdef{i}{nmft-it}{Italic authors}{(\string\it\space or \string\em)}
  721. \optdef{b}{nmft-bf}{Bold authors}{(\string\bf)}
  722. \getans
  723. %    \end{macrocode}
  724. % \subsection*{Position of date}
  725. % This applies to author-year style only. It makes sense to put the date
  726. % immediately after the author list, since the two items (author and year)
  727. % are the identifiers of the reference. Default position is at the
  728. % end of the references, before any notes. It is also possible to place
  729. % it even after the notes.
  730. %    \begin{macrocode}
  731. \ifnumerical\else
  732. \mes{^^JDATE POSITION:}
  733. \optdef{*}{}{Date at end}{}
  734. \optdef{b}{dt-beg}{Date after authors}{}
  735. \optdef{e}{dt-end}{Date at very end}{after any notes}
  736. \getans
  737. %    \end{macrocode}
  738. % \subsection*{Format of date}
  739. % The year may be enclosed in parentheses, brackets, or preceded by a
  740. % colon. If none of these are selected, the date (month plus year) appears. 
  741. % For author-year, the date always consists only of the year, no month.
  742. %    \begin{macrocode}
  743. \mes{^^JDATE FORMAT:}
  744. \ifnumerical
  745. \optdef{*}{}{Month and year}{without any brackets}
  746. \else
  747. \optdef{*}{}{Year plain}{without any brackets}
  748. \optdef{p}{yr-par}{Year in parentheses}{no month, as (1993)}
  749. \optdef{b}{yr-brk}{Year in brackets}{no month, as [1993]}
  750. \optdef{c}{yr-col}{Year preceded by colon}{no month, as : 1993}
  751. \getans
  752. %    \end{macrocode}
  753. % \subsection*{Article title in journal}
  754. % The title of an article in a journal or in a collection (a book, or
  755. % conference proceedings) may appear plain, in italics, within single
  756. % or double quotes. 
  757. % Furthermore, it may have sentence capitalization (first
  758. % word and word following colon) or be capitalized as in the {\tt.bib} file
  759. % entry. That is why it is recommended to capitalize the entry text as it
  760. % should appear when fully capitalized, putting words that are always
  761. % capitalized in braces. Example:
  762. % \begin{quote}
  763. % |TITLE="The Results of the {Giotto} Mission"|
  764. % \end{quote}
  765. % which produces either ``The results of the Giotto mission'' or ``The
  766. % Results of the Giotto Mission'', depending on option.
  767. % Additionally, the article titles may be fully suppressed.
  768. %    \begin{macrocode}
  769. \mes{^^JTITLE OF ARTICLE:}
  770. \optdef{*}{}{Title plain}{with no special font}
  771. \optdef{i}{tit-it}{Title italic}{(\string\em)}
  772. \optdef{q}{tit-q}{Title in single quotes}{(`Title')}
  773. \optdef{d}{tit-qq}{Title in double quotes}{(``Title'')}
  774. \getans
  775. \mes{^^JCAPITALIZATION OF ARTICLE TITLE:}
  776. \optdef{*}{}{First and important words}{in capitals}
  777. \optdef{u}{atit-u}{Capitalized}{as in bib entry}
  778. \getans
  779. \mes{^^JARTICLE TITLE PRESENT:}
  780. \optdef{*}{}{Article title present}{in journals and proceedings}
  781. \optdef{x}{jtit-x}{No article title}{}
  782. \getans
  783. %    \end{macrocode}
  784. % \subsection*{Title of Theses}
  785. % The title of a these (PhD or Master's) is normally treated the same
  786. % as that of a book. Optionally, it may be formatted like that of 
  787. % an article.
  788. %    \begin{macrocode}
  789. \mes{^^JTHESIS TITLE:}
  790. \optdef{*}{}{Thesis titles like books}{}
  791. \optdef{a}{thtit-a}{Thesis title like article}{}
  792. \getans
  793. %    \end{macrocode}
  794. % \subsection*{Journal reference}
  795. % Great diversity of opinion exists as to how a journal reference is to be
  796. % formatted. It consists of a volume, possibly a number, and page limits.
  797. % The number is really only necessary if the page numbers within one volume
  798. % start at 1 for each physical `number'. Since journals are often bound
  799. % together in one volume later, it makes more sense to number the pages
  800. % continuously through the whole volume. However, this is not always so,
  801. % and then the `number' is necessary for the full specification.
  802. % A number of styles for journal specifications are
  803. % \begin{quote}
  804. % 21(2):33--55\\
  805. % {\bf 21}(2):33--55\\
  806. % {\it 21}(2), 33--55
  807. % \end{quote}
  808. % Here both start and stop page numbers have been given; often only the
  809. % start page is wanted.
  810. % Finally, it is possible to decide whether the journal name should be
  811. % separated from the following specifications with a blank or comma.
  812. %    \begin{macrocode}
  813. \mes{^^JJOURNAL VOLUME NUMBER:}
  814. \optdef{*}{}{Volume plain}{as vol(num)}
  815. \optdef{i}{vol-it}{Volume italic}{as {\string\em\space vol}(num)}
  816. \optdef{b}{vol-bf}{Volume bold}{as {\string\bf\space vol}(num)}
  817. \optdef{d}{vol-2bf}{Volume and number bold}{as {\string\bf\space vol(num)}}
  818. \getans
  819. \mes{^^JVOLUME PUNCTUATION:}
  820. \optdef{*}{}{Volume with colon}{as vol(num):}
  821. \optdef{c}{volp-com}{Volume with comma}{as vol(num),}
  822. \getans
  823. \mes{^^JPAGE NUMBERS:}
  824. \optdef{*}{}{Start and stop page numbers}{given}
  825. \optdef{f}{jpg-1}{Only start page number}{}
  826. \getans
  827. \mes{^^JJOURNAL NAME PUNCTUATION:}
  828. \optdef{*}{}{Comma after journal}{name}
  829. \optdef{x}{jnm-x}{Space after journal}{name}
  830. \getans
  831. %    \end{macrocode}
  832. % \subsection*{Book title}
  833. % The title of a book (as opposed to an article in a book or journal) is
  834. % normally italicized. This may be set to the regular font.
  835. %    \begin{macrocode}
  836. \mes{^^JBOOK TITLE:}
  837. \optdef{*}{}{Book title italic}{(\string\em)}
  838. \optdef{p}{btit-rm}{Book title plain}{(no font command)}
  839. \getans
  840. %    \end{macrocode}
  841. % \subsection*{Edited by}
  842. % For an article within an edited collection, the normal form is 
  843. % \begin{quote}
  844. % In J. K. James, editor, {\em Title of Collection} \dots
  845. % \end{quote}
  846. % An alternative is the form
  847. % \begin{quote}
  848. % In {\em Title of Collection}, edited by J. K. James \dots
  849. % \end{quote}
  850. %    \begin{macrocode}
  851. \mes{^^JEDITOR STYLE:}
  852. \optdef{*}{}{Word editor}{after name of editor}
  853. \optdef{b}{edby}{Edited by}{before name of editor}
  854. \getans
  855. %    \end{macrocode}
  856. % \subsection*{Block punctuation}
  857. % Blocks are logical sections of the reference specification, such as the
  858. % author block, the journal block, editor block, etc. These are normally
  859. % separated by periods, but alternatively a comma may be used. Another
  860. % choice is to use commas except after titles where a period is given.
  861. %    \begin{macrocode}
  862. \mes{^^JPUNCTUATION BETWEEN SECTIONS (BLOCKS):}
  863. \optdef{*}{}{Period after blocks}{of authors, title, etc}
  864. \optdef{c}{blk-com}{Comma after blocks}{}
  865. \optdef{t}{blk-tit}{Only titles with period}{but other blocks commas}
  866. \getans
  867. %    \end{macrocode}
  868. % \subsection*{`In' with colon}
  869. % When referring to works in a collection, one begins the block describing
  870. % that collection with `In'. Optionally, one may add a colon.
  871. %    \begin{macrocode}
  872. \mes{^^JPUNCTUATION AFTER `IN':}
  873. \optdef{*}{}{Space after `in'}{for editted works or proceedings}
  874. \optdef{c}{in-col}{Colon after `in'}{(as `In: ...')}
  875. \getans
  876. %    \end{macrocode}
  877. % \subsection*{Final punctuation}
  878. % The punctuation at the end of the reference is normally a period. This
  879. % may be suppressed.
  880. %    \begin{macrocode}
  881. \mes{^^JFINAL PUNCTUATION:}
  882. \optdef{*}{}{Period at very end}{of the listed reference}
  883. \optdef{x}{fin-bare}{No period at end}{}
  884. \getans
  885. %    \end{macrocode}
  886. % \subsection*{Abbreviations}
  887. % A number of words may be abbreviated: pages, editors, volume, chapter,
  888. % and so on. The first two may be independently set to abbreviation, the
  889. % rest with a single option. 
  890. % Additionally, the edition numbers may be
  891. % output as words (first, second, etc.) or as numbers (1st, 2nd, etc.). 
  892. % (Recall that the input in the {\tt.bib} file is always as English
  893. % words.)
  894. %    \begin{macrocode}
  895. \mes{^^JABBREVIATE WORD `PAGES':}
  896. \optdef{*}{}{`Page(s)'}{(no abbreviation)}
  897. \optdef{a}{pp}{`Page' abbreviated}{as p. or pp.}
  898. \getans
  899. \mes{^^JABBREVIATE WORD `EDITORS':}
  900. \optdef{*}{}{`Editor(s)'}{(no abbreviation)}
  901. \optdef{a}{ed}{`Editor' abbreviated}{as ed. or eds.}
  902. \getans
  903. \mes{^^JOTHER ABBREVIATIONS:}
  904. \optdef{*}{}{No abbreviations}{of volume, edition, chapter, etc}
  905. \optdef{a}{abr}{Abbreviations}{of such words}
  906. \getans
  907. \mes{^^JEDITION NUMBERS:}
  908. \optdef{*}{}{Write out editions}{as first, second, third, etc}
  909. \optdef{n}{ord}{Numerical editions}{as 1st, 2nd, 3rd, etc}
  910. \getans
  911. %    \end{macrocode}
  912. % \subsection*{Citation label}
  913. % This applies to author-year style only. The label is the text written
  914. % by the |\cite| command, and for author-year style, this is something like
  915. % `Daly et al.\ (1990b)'. One may select italics for the authors and for the
  916. % extra label attached to the year. The year always remains plain.
  917. % It is not possible to select the type of brackets for the year, since
  918. % this is determined by the \LaTeX{} style option that manages the
  919. % author-year citations. This is not standard \LaTeX, so that there are a
  920. % number of private style files for achieving this.
  921. %    \begin{macrocode}
  922. \ifnumerical\else
  923. \mes{^^JFONT OF CITATION LABEL:}
  924. \optdef{*}{}{Cited authors plain}{as result of \string\cite\space command}
  925. \optdef{i}{lab-it}{Cited authors italic}{}
  926. \getans
  927. \mes{^^JFONT OF EXTRA LABEL:^^J(The extra letter on the year)}
  928. \optdef{*}{}{Extra label plain}{}
  929. \optdef{i}{xlab-it}{Extra label italic}{}
  930. \getans
  931. %    \end{macrocode}
  932. % \subsection*{Variations on `and'}
  933. % It is possible to replace the word `and' with an ampersand \&, and to
  934. % specify whether a comma is to precede `and' in a list of more than two
  935. % names.
  936. %    \begin{macrocode}
  937. \mes{^^JAMPERSAND:}
  938. \optdef{*}{}{Use word `and'}{in author lists}
  939. \optdef{a}{amper}{Use ampersand}{in place of `and'}
  940. \getans
  941. \mes{^^JCOMMA BEFORE `AND':}
  942. \optdef{*}{}{Comma before `and'}{as `Tom, Dick, and Harry'}
  943. \optdef{n}{and-xcom}{No comma before `and'}{as `Tom, Dick and Harry'}
  944. \optdef{c}{and-com}{Comma with 2 authors}{as `Tom, and Harry'}
  945. \optdef{x}{and-x}{No `and'}{as `Tom, Dick, Harry'}
  946. \getans
  947. %    \end{macrocode}
  948. % \subsection*{Font of `et al'}
  949. % One can chose that `et al.'\ be put into italics.
  950. %    \begin{macrocode}
  951. \mes{^^JFONT OF `ET AL':}
  952. \optdef{*}{}{Plain et al}{}
  953. \optdef{i}{etal-it}{Italic et al}{}
  954. \getans
  955. %    \end{macrocode}
  956. % \subsection*{Define emphasis}
  957. % In everything that been mentioned so far, italicization should be
  958. % understood to mean `emphasize' in the \LaTeX{} sense. This means that the
  959. % command |\em| is used. This is not the same as |\it|, which is always
  960. % italics. Rather, with |\em|, the font style switches between |\rm| and
  961. % |\it| depending on the context. Here one may choose to true italics, or
  962. % to switch off italics altogether.
  963. %    \begin{macrocode}
  964. \mes{^^JEMPHASIS:^^J(affects all so-called italics)}
  965. \optdef{*}{}{Use emphasis}{ie, \string\em, allows font switching}
  966. \optdef{i}{em-it}{Use true italics}{ie, \string\it, absolute italics}
  967. \optdef{x}{em-x}{No italics}{at all}
  968. \getans
  969. \endoptions
  970. %</options>
  971. %    \end{macrocode}
  972. % \StopEventually{\relax
  973. %  \end{document}}
  974. % \section{The Bibliographic Coding}
  975. %    \begin{macrocode}
  976. %<*!options&!bblbst>
  977. %%---------------------------------------------------------------------
  978.  % This bibliography style file is intended for texts in
  979. %^^A NEWLANGUAGE: add an entry here, e.g.
  980. %^^A              %<newlang>             NAME OF LANGUAGE
  981. %<english> %               ENGLISH
  982. %<german> %                GERMAN
  983. %<french> %                FRENCH
  984. %<espo> %                  ESPERANTO
  985. %<babel> %                 BABEL (definitions of words in babelbst.tex)
  986. %<*ay>
  987.  % This is an author-year citation style bibliography. As such, it is 
  988.  % non-standard LaTeX, and requires a style option to function properly.
  989. %<*alk>
  990.  % An appropriate style option is:   apalike.sty    by Oren Patashnik
  991.  % The form of the \bibitem entries is
  992.  %   \bibitem[Jones et al., 1990]{key}...
  993.  % The \cite command functions as in standard LaTeX
  994.  %   \cite{key} ==>> (Jones et al., 1990)
  995.  %   \cite[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
  996.  % There is no way to generate textual citations.
  997. %</alk>
  998. %<*!(har|ast|alk|cay|cn)>
  999.  % An appropriate style option is:   natbib.sty    by Patrick W. Daly
  1000.  % The form of the \bibitem entries is
  1001.  %   \bibitem[Jones et al.(1990)]{key}...
  1002.  % The essential feature is that the label (the part in brackets) consists
  1003.  % of the author names, as they should appear in the citation, with the year
  1004.  % in parentheses following. There must be no space before the opening
  1005.  % parenthesis!
  1006.  % In natbib.sty, it is possible to define the type of enclosures that is
  1007.  % really wanted (brackets or parentheses), but in either case, there must
  1008.  % be parentheses in the label.
  1009.  % The \cite command functions as follows:
  1010.  %   \cite{key} ==>>                Jones et al. (1990)
  1011.  %   \cite[]{key} ==>>              (Jones et al., 1990)
  1012.  %   \cite[chap. 2]{key} ==>>       (Jones et al., 1990, chap. 2)
  1013. %</!(har|ast|alk|cay|cn)>
  1014. %<*har>
  1015.  % The appropriate style file is:   harvard.sty
  1016.  % The form of the bibitem entries is
  1017.  %   \harvarditem[Jones et al.]{Jones, Baker, and Smith}{1990}{key}...
  1018.  % There are style changes that may be specified in the text with
  1019.  % the command \citationstyle.
  1020.  %   \citeasnoun{key} ==>>    Jones et al. (1990)
  1021.  %   \cite{key} ==>>          (Jones et al. 1990)
  1022.  %   \cite[chap. 2]{key} ==>> (Jones et al. 1990, chap. 2)
  1023.  % On the first citation of any work, the full author list is used.
  1024. %</har>
  1025. %<*cay>
  1026.  % The appropriate style file is:   chicago.sty
  1027.  % The form of the bibitem entries is
  1028.  %   \bibitem[\protect\citeauthoryear{Jones, Baker, and Smith}
  1029.  %        {Jones et al.}{1990}{key}...
  1030.  % The available citation commands are
  1031.  %    \cite{key} ==>>     (Jones, Baker, and Smith 1990)
  1032.  %    \citeA{key} ==>>    (Jones, Baker, and Smith)
  1033.  %    \citeNP{key} ==>>   Jones, Baker, and Smith 1990
  1034.  %    \citeANP{key} ==>>  Jones, Baker, and Smith
  1035.  %    \citeN{key} ==>>    Jones, Baker, and Smith (1990)
  1036.  %    \shortcite  ==>>    (Jones et al. 1990)
  1037.  %      etc
  1038.  %    \citeyear ==>>      (1990)
  1039.  %    \citeyearNP ==>>    1990
  1040.  %    Optional notes may be added where meaningful.
  1041. %</cay>
  1042. %<*ast>
  1043.  % The appropriate style file is:   astron.sty
  1044.  % The form of the bibitem entries is
  1045.  %   \bibitem[\protect\astroncite{Jones et al.}{1990}]{key}...
  1046.  % Usage of \cite is as follows:
  1047.  %   \cite{key} ==>>          (Jones et al., 1990)
  1048.  %   \cite[chap. 2]{key} ==>> (Jones et al. 1990, chap. 2)
  1049.  %   \cite*{key} ==>>         (1990)
  1050. %</ast>
  1051. %<*cn>
  1052.  % An appropriate style file is:   authordate1-4.sty
  1053.  % The form of the bibitem entries is
  1054.  %   \bibitem[\protect\citename{Jones et al.}1990]{key}...
  1055.  % Usage of \cite is as follows:
  1056.  %   \cite{key} ==>>          (Jones et al., 1990)
  1057.  %   \cite[chap. 2]{key} ==>> (Jones et al. 1990, chap. 2)
  1058.  %   \shortcite{key} ==>>     (1990)
  1059. %</cn>
  1060. %</ay>
  1061. %<*!ay>
  1062.  % This is a numerical citation style, and as such is standard LaTeX.
  1063.  % It requires no extra style option to interface to the main text.
  1064.  % The form of the \bibitem entries is 
  1065.  %   \bibitem{key}...
  1066.  % Usage of \cite is as follows:
  1067.  %   \cite{key} ==>>          [#]
  1068.  %   \cite[chap. 2]{key} ==>> [#, chap. 2]
  1069.  % where # is a number determined by the ordering in the reference list.
  1070. %<*seq-no> 
  1071.  % This is the order in which the works were originally cited in the text.
  1072. %</seq-no> 
  1073. %<*!seq-no> 
  1074.  % This is alphabetical by authors.
  1075. %</!seq-no> 
  1076. %</!ay>
  1077. %<*!ay&cite>
  1078.  % This is a special pseudo-numerical bibliography style. The form of 
  1079.  % the \bibitem entries is
  1080.  %   \bibitem[key]{key}...
  1081.  % It is intended to be used to list all the entries in a bib database
  1082. %</!ay&cite>
  1083. %%---------------------------------------------------------------------
  1084. ENTRY
  1085.   { address
  1086.     author
  1087.     booktitle
  1088.     chapter
  1089.     edition
  1090.     editor
  1091.     howpublished
  1092.     institution
  1093.     journal
  1094.     key
  1095.     month
  1096.     note
  1097.     number
  1098.     organization
  1099.     pages
  1100.     publisher
  1101.     school
  1102.     series
  1103.     title
  1104.     type
  1105.     volume
  1106.     year
  1107. %<!ay>  { label }
  1108. %<ay&!(har|cay)>  { label extra.label sort.label }
  1109. %<ay&(har|cay)>  { label extra.label sort.label long.label }
  1110. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  1111. FUNCTION {init.state.consts}
  1112. { #0 'before.all :=
  1113.   #1 'mid.sentence :=
  1114.   #2 'after.sentence :=
  1115.   #3 'after.block :=
  1116. STRINGS { s t }
  1117. FUNCTION {output.nonnull}
  1118. { 's :=
  1119.   output.state mid.sentence =
  1120.     { ", " * write$ }
  1121.     { output.state after.block =
  1122.         { add.period$ write$
  1123.           newline$
  1124.           "\newblock " write$
  1125.         }
  1126.         { output.state before.all =
  1127.             'write$
  1128.             { add.period$ " " * write$ }
  1129.           if$
  1130.         }
  1131.       if$
  1132.       mid.sentence 'output.state :=
  1133.     }
  1134.   if$
  1135. FUNCTION {output}
  1136. { duplicate$ empty$
  1137.     'pop$
  1138.     'output.nonnull
  1139.   if$
  1140. FUNCTION {output.check}
  1141. { 't :=
  1142.   duplicate$ empty$
  1143.     { pop$ "empty " t * " in " * cite$ * warning$ }
  1144.     'output.nonnull
  1145.   if$
  1146. %    \end{macrocode}
  1147. % \begin{macro}{`output.bibitem'}
  1148. %\changes{1.1}{1993 Nov 12}{Test for missing year, set to {\tt????}.}
  1149. % The {\tt output.bibitem} function formats the |\bibitem| entries.
  1150. %    \begin{macrocode}
  1151. FUNCTION {output.bibitem}
  1152. { newline$
  1153. %<*ay>
  1154. %<!har>  "\bibitem[" write$
  1155. %<har>  "\harvarditem[" write$
  1156. %<ast>  "\protect\astroncite{" write$
  1157. %<cay>  "\protect\citeauthoryear{" long.label * "}{" * write$
  1158. %<cn>  "\protect\citename{" write$
  1159.   label write$
  1160. %<har>  "]{" long.label * "}{" * write$
  1161. %<har>  year duplicate$ empty$
  1162. %<cn>  ", }" year duplicate$ empty$
  1163. %<cay|ast>  "}{" year duplicate$ empty$
  1164. %<har|cn|cay|ast>    { pop$ "????" }
  1165. %<har|cn|cay|ast>    'skip$
  1166. %<har|cn|cay|ast>  if$
  1167. %<har>  extra.label * "}{" * write$
  1168. %<cn>  * extra.label * "]{" * write$
  1169. %<cay|ast>  * extra.label * "}]{" * write$
  1170. %<alk>  "]{" write$
  1171. %<!(har|cay|ast|alk|cn)>  ")]{" write$
  1172. %</ay>
  1173. %<!ay&!cite>  "\bibitem{" write$
  1174. %<!ay&cite>  "\bibitem[" label * "]{" * write$
  1175.   cite$ write$
  1176.   "}" write$
  1177.   newline$
  1178.   before.all 'output.state :=
  1179. %    \end{macrocode}
  1180. % \end{macro}
  1181. %    \begin{macrocode}
  1182. FUNCTION {fin.entry}
  1183. %<*!fin-bare>
  1184. { add.period$
  1185.   write$
  1186. %</!fin-bare>
  1187. %<*fin-bare>
  1188. { duplicate$ empty$   
  1189.     'pop$
  1190.     'write$
  1191.   if$
  1192. %</fin-bare>
  1193.   newline$
  1194. FUNCTION {new.block}
  1195. { output.state before.all =
  1196.     'skip$
  1197.     { after.block 'output.state := }
  1198.   if$
  1199. FUNCTION {new.sentence}
  1200. { output.state after.block =
  1201.     'skip$
  1202.     { output.state before.all =
  1203.         'skip$
  1204.         { after.sentence 'output.state := }
  1205.       if$
  1206.     }
  1207.   if$
  1208. FUNCTION {not}
  1209. {   { #0 }
  1210.     { #1 }
  1211.   if$
  1212. FUNCTION {and}
  1213. {   'skip$
  1214.     { pop$ #0 }
  1215.   if$
  1216. FUNCTION {or}
  1217. {   { pop$ #1 }
  1218.     'skip$
  1219.   if$
  1220. %<*!ay>
  1221. FUNCTION {new.block.checka}
  1222. { empty$
  1223.     'skip$
  1224.     'new.block
  1225.   if$
  1226. %</!ay>
  1227. FUNCTION {new.block.checkb}
  1228. { empty$
  1229.   swap$ empty$
  1230.   and
  1231.     'skip$
  1232.     'new.block
  1233.   if$
  1234. %<*!ay>
  1235. FUNCTION {new.sentence.checka}
  1236. { empty$
  1237.     'skip$
  1238.     'new.sentence
  1239.   if$
  1240. FUNCTION {new.sentence.checkb}
  1241. { empty$
  1242.   swap$ empty$
  1243.   and
  1244.     'skip$
  1245.     'new.sentence
  1246.   if$
  1247. %</!ay>
  1248. FUNCTION {field.or.null}
  1249. { duplicate$ empty$
  1250.     { pop$ "" }
  1251.     'skip$
  1252.   if$
  1253. FUNCTION {emphasize}
  1254. %<*!em-x>
  1255. { duplicate$ empty$
  1256.     { pop$ "" }
  1257. %<!em-it>    { "{\em " swap$ * "}" * }
  1258. %<em-it>    { "{\it " swap$ * "}" * }
  1259.   if$
  1260. %</!em-x>
  1261. %<em-x>{ skip$ }
  1262. %<*nmft-bf|vol-bf|vol-2bf>
  1263. FUNCTION {bolden}
  1264. { duplicate$ empty$
  1265.     { pop$ "" }
  1266.     { "{\bf " swap$ * "}" * }
  1267.   if$
  1268. %</nmft-bf|vol-bf|vol-2bf>
  1269. %    \end{macrocode}
  1270. % \begin{macro}{`space.word'}
  1271. % \changes{2.0}{1994 Jan 31}{Add function to space out words; necessary
  1272. %          for the multilingual functions.}
  1273. % The function {\tt space.word} adds a space before and after the word or
  1274. % words currently on the stack. This was added for the {\tt bbl.}$nnn$
  1275. % functions, that contain only a word without spacing, but replace explicit
  1276. % text in the originals that were spaced out. Its seems more flexible to
  1277. % define the word functions to be without spacing.
  1278. %    \begin{macrocode}
  1279. FUNCTION {space.word}
  1280. { " " swap$ * " " * }
  1281.  % Here are the language-specific definitions for explicit words.
  1282.  % Each function has a name bbl.xxx where xxx is the English word.
  1283. %    \end{macrocode}
  1284. % \end{macro}
  1285. %^^A NEWLANGUAGE: take everything from here to \end{macrocode}
  1286. %^^A   copy it, change english to newlang, change the English words.
  1287. %^^A   Also change the introductory text accordingly (lines preceding
  1288. %^^A   \begin{macrocode}. These lines beginning with %^^A may be left off.
  1289. %^^A   If a double-quote is to appear (see German bbl.fifth), use \qq
  1290. %^^A     instead and change begin.bib as for German.
  1291. % \begin{macro}{`bbl.xxx'}
  1292. % \changes{2.0}{1994 Jan 31}{Replace all explicit words with functions
  1293. %     of the form {\tt bbl.xxx}.}
  1294. % These are the default English words. In fact, there is no default, for
  1295. % even English must be given explicitly as an option. This is due to the
  1296. % nature of {\tt docstrip} in which the default can only be selected by
  1297. % negating all the other languages. This would make adding languages
  1298. % difficult. Furthermore, \btx{} does not allow an existing function to
  1299. % be redefined. 
  1300. %    \begin{macrocode}
  1301. %<*english>
  1302.  % The language selected here is ENGLISH
  1303. FUNCTION {bbl.and}
  1304. { "and"}
  1305. FUNCTION {bbl.editors}
  1306. %<!ed>{ "editors" }
  1307. %<ed>{ "eds." }
  1308. FUNCTION {bbl.editor}
  1309. %<!ed>{ "editor" }
  1310. %<ed>{ "ed." }
  1311. FUNCTION {bbl.edby}
  1312. { "edited by" }
  1313. FUNCTION {bbl.edition}
  1314. %<!abr>{ "edition" }
  1315. %<abr>{ "edn." }
  1316. FUNCTION {bbl.vvolume}
  1317. %<!abr>{ "Volume" }
  1318. %<abr>{ "Vol." }
  1319. FUNCTION {bbl.volume}
  1320. %<!abr>{ "volume" }
  1321. %<abr>{ "vol." }
  1322. FUNCTION {bbl.of}
  1323. { "of" }
  1324. FUNCTION {bbl.nnumber}
  1325. %<!abr>{ "Number" }
  1326. %<abr>{ "No." }
  1327. FUNCTION {bbl.number}
  1328. %<!abr>{ "number" }
  1329. %<abr>{ "no." }
  1330. FUNCTION {bbl.in}
  1331. { "in" }
  1332. FUNCTION {bbl.iin}
  1333. { "In" }
  1334. FUNCTION {bbl.pages}
  1335. %<!pp>{ "pages" }
  1336. %<pp>{ "pp." }
  1337. FUNCTION {bbl.page}
  1338. %<!pp>{ "page" }
  1339. %<pp>{ "p." }
  1340. FUNCTION {bbl.chapter}
  1341. %<!abr>{ "chapter" }
  1342. %<abr>{ "chap." }
  1343. FUNCTION {bbl.techrep}
  1344. %<!abr>{ "Technical Report" }
  1345. %<abr>{ "Tech. Rep." }
  1346. FUNCTION {bbl.mthesis}
  1347. { "Master's Thesis" }
  1348. FUNCTION {bbl.phdthesis}
  1349. { "Ph.D. Thesis" }
  1350. FUNCTION {bbl.first}
  1351. %<!ord>{ "First" }
  1352. %<ord>{ "1st" }
  1353. FUNCTION {bbl.second}
  1354. %<!ord>{ "Second" }
  1355. %<ord>{ "2nd" }
  1356. FUNCTION {bbl.third}
  1357. %<!ord>{ "Third" }
  1358. %<ord>{ "3rd" }
  1359. FUNCTION {bbl.fourth}
  1360. %<!ord>{ "Fourth" }
  1361. %<ord>{ "4th" }
  1362. FUNCTION {bbl.fifth}
  1363. %<!ord>{ "Fifth" }
  1364. %<ord>{ "5th" }
  1365. FUNCTION {bbl.st}
  1366. { "st" }
  1367. FUNCTION {bbl.nd}
  1368. { "nd" }
  1369. FUNCTION {bbl.rd}
  1370. { "rd" }
  1371. FUNCTION {bbl.th}
  1372. { "th" }
  1373. %</english>
  1374. %^^A When editions numbers extended, change text. Look for maxeds.
  1375. %    \end{macrocode}
  1376. % Here are the definitions for {\tt babel} option, i.e., explicit
  1377. % translations are not used, but rather only \LaTeX{} macros that must be
  1378. % defined in the file {\tt babelbst.tex}. This could allow automatic
  1379. % language selection.
  1380. %    \begin{macrocode}
  1381. %<*babel>
  1382.  % The BABEL language selection is made here; definitions in babelbst.tex.
  1383. FUNCTION {bbl.and}
  1384. { "\bbland{}"}
  1385. FUNCTION {bbl.editors}
  1386. %<!ed>{ "\bbleditors{}" }
  1387. %<ed>{ "\bbleds{}" }
  1388. FUNCTION {bbl.editor}
  1389. %<!ed>{ "\bbleditor{}" }
  1390. %<ed>{ "\bbled{}" }
  1391. FUNCTION {bbl.edby}
  1392. { "\bbledby{}" }
  1393. FUNCTION {bbl.edition}
  1394. %<!abr>{ "\bbledition{}" }
  1395. %<abr>{ "\bbledn{}" }
  1396. FUNCTION {bbl.vvolume}
  1397. %<!abr>{ "\bblVolume{}" }
  1398. %<abr>{ "\bblVol{}" }
  1399. FUNCTION {bbl.volume}
  1400. %<!abr>{ "\bblvolume{}" }
  1401. %<abr>{ "\bblvol{}" }
  1402. FUNCTION {bbl.of}
  1403. { "\bblof{}" }
  1404. FUNCTION {bbl.nnumber}
  1405. %<!abr>{ "\bblNumber{}" }
  1406. %<abr>{ "\bblNo{}" }
  1407. FUNCTION {bbl.number}
  1408. %<!abr>{ "\bblnumber{}" }
  1409. %<abr>{ "\bblno{}" }
  1410. FUNCTION {bbl.in}
  1411. { "\bblin{}" }
  1412. FUNCTION {bbl.iin}
  1413. { "\bblIn{}" }
  1414. FUNCTION {bbl.pages}
  1415. %<!pp>{ "\bblpages{}" }
  1416. %<pp>{ "\bblpp{}" }
  1417. FUNCTION {bbl.page}
  1418. %<!pp>{ "\bblpage{}" }
  1419. %<pp>{ "\bblp{}" }
  1420. FUNCTION {bbl.chapter}
  1421. %<!abr>{ "\bblchapter{}" }
  1422. %<abr>{ "\bblchap{}" }
  1423. FUNCTION {bbl.techrep}
  1424. %<!abr>{ "\bbltechreport{}" }
  1425. %<abr>{ "\bbltechrep{}" }
  1426. FUNCTION {bbl.mthesis}
  1427. { "\bblmthesis{}" }
  1428. FUNCTION {bbl.phdthesis}
  1429. { "\bblphdthesis{}" }
  1430. FUNCTION {bbl.first}
  1431. %<!ord>{ "\bblfirst{}" }
  1432. %<ord>{ "\bblfirsto{}" }
  1433. FUNCTION {bbl.second}
  1434. %<!ord>{ "\bblsecond{}" }
  1435. %<ord>{ "\bblsecondo{}" }
  1436. FUNCTION {bbl.third}
  1437. %<!ord>{ "\bblthird{}" }
  1438. %<ord>{ "\bblthirdo{}" }
  1439. FUNCTION {bbl.fourth}
  1440. %<!ord>{ "\bblfourth{}" }
  1441. %<ord>{ "\bblfourtho{}" }
  1442. FUNCTION {bbl.fifth}
  1443. %<!ord>{ "\bblfifth{}" }
  1444. %<ord>{ "\bblfiftho{}" }
  1445. FUNCTION {bbl.st}
  1446. { "\bblst" }
  1447. FUNCTION {bbl.nd}
  1448. { "\bblnd" }
  1449. FUNCTION {bbl.rd}
  1450. { "\bblrd" }
  1451. FUNCTION {bbl.th}
  1452. { "\bblth" }
  1453. %</babel>
  1454. %    \end{macrocode}
  1455. % The German translations of the explicit word functions.
  1456. %    \begin{macrocode}
  1457. %<*german>
  1458.  % The language selected here is GERMAN
  1459. FUNCTION {bbl.and}
  1460. { "und"}
  1461. FUNCTION {bbl.editors}
  1462. %<!ed>{ "Redakteure" }
  1463. %<ed>{ "Red." }
  1464. FUNCTION {bbl.editor}
  1465. %<!ed>{ "Redakteur" }
  1466. %<ed>{ "Red." }
  1467. FUNCTION {bbl.edby}
  1468. { "herausgegeben von" }
  1469. FUNCTION {bbl.edition}
  1470. %<!abr>{ "Auflage" }
  1471. %<abr>{ "Aufl." }
  1472. FUNCTION {bbl.vvolume}
  1473. %<!abr>{ "Band" }
  1474. %<abr>{ "Bd." }
  1475. FUNCTION {bbl.volume}
  1476. %<!abr>{ "Band" }
  1477. %<abr>{ "Bd." }
  1478. FUNCTION {bbl.of}
  1479. { "von" }
  1480. FUNCTION {bbl.nnumber}
  1481. %<!abr>{ "Nummer" }
  1482. %<abr>{ "No." }
  1483. FUNCTION {bbl.number}
  1484. %<!abr>{ "Nummer" }
  1485. %<abr>{ "No." }
  1486. FUNCTION {bbl.in}
  1487. { "in" }
  1488. FUNCTION {bbl.iin}
  1489. { "In" }
  1490. FUNCTION {bbl.pages}
  1491. %<!pp>{ "Seiten" }
  1492. %<pp>{ "S." }
  1493. FUNCTION {bbl.page}
  1494. %<!pp>{ "Seite" }
  1495. %<pp>{ "S." }
  1496. FUNCTION {bbl.chapter}
  1497. %<!abr>{ "Kapitel" }
  1498. %<abr>{ "Kap." }
  1499. FUNCTION {bbl.techrep}
  1500. %<!abr>{ "Technischer Bericht" }
  1501. %<abr>{ "Tech. Ber." }
  1502. FUNCTION {bbl.mthesis}
  1503. { "Diplomarbeit" }
  1504. FUNCTION {bbl.phdthesis}
  1505. { "Doktorarbeit" }
  1506. FUNCTION {bbl.first}
  1507. %<!ord>{ "Erste" }
  1508. %<ord>{ "1." }
  1509. FUNCTION {bbl.second}
  1510. %<!ord>{ "Zweite" }
  1511. %<ord>{ "2." }
  1512. FUNCTION {bbl.third}
  1513. %<!ord>{ "Dritte" }
  1514. %<ord>{ "3." }
  1515. FUNCTION {bbl.fourth}
  1516. %<!ord>{ "Vierte" }
  1517. %<ord>{ "4." }
  1518. FUNCTION {bbl.fifth}
  1519. %<!ord>{ "F\qq{u}nfte" }
  1520. %<ord>{ "5." }
  1521. FUNCTION {bbl.th}
  1522. { "." }
  1523. %</german>
  1524. %    \end{macrocode}
  1525. % The French translations of the explicit word functions.
  1526. %    \begin{macrocode}
  1527. %<*french>
  1528.  % The language selected here is FRENCH
  1529. FUNCTION {bbl.and}
  1530. { "et"}
  1531. FUNCTION {bbl.editors}
  1532. %<!ed>{ "r\'edacteurs" }
  1533. %<ed>{ "r\'eds." }
  1534. FUNCTION {bbl.editor}
  1535. %<!ed>{ "r\'edacteur" }
  1536. %<ed>{ "r\'ed." }
  1537. FUNCTION {bbl.edby}
  1538. { "edit\'e par" }
  1539. FUNCTION {bbl.edition}
  1540. %<!abr>{ "\'edition" }
  1541. %<abr>{ "\'edn." }
  1542. FUNCTION {bbl.vvolume}
  1543. %<!abr>{ "Tome" }
  1544. %<abr>{ "Tm." }
  1545. FUNCTION {bbl.volume}
  1546. %<!abr>{ "tome" }
  1547. %<abr>{ "tm." }
  1548. FUNCTION {bbl.of}
  1549. { "de" }
  1550. FUNCTION {bbl.nnumber}
  1551. %<!abr>{ "Num\'ero" }
  1552. %<abr>{ "No." }
  1553. FUNCTION {bbl.number}
  1554. %<!abr>{ "num\'ero" }
  1555. %<abr>{ "no." }
  1556. FUNCTION {bbl.in}
  1557. { "dans" }
  1558. FUNCTION {bbl.iin}
  1559. { "Dans" }
  1560. FUNCTION {bbl.pages}
  1561. %<!pp>{ "pages" }
  1562. %<pp>{ "pp." }
  1563. FUNCTION {bbl.page}
  1564. %<!pp>{ "page" }
  1565. %<pp>{ "p." }
  1566. FUNCTION {bbl.chapter}
  1567. %<!abr>{ "chapitre" }
  1568. %<abr>{ "chap." }
  1569. FUNCTION {bbl.techrep}
  1570. %<!abr>{ "Rapport technique" }
  1571. %<abr>{ "Rap. tech." }
  1572. FUNCTION {bbl.mthesis}
  1573. { "Th\`ese de Ma\^itre" }
  1574. FUNCTION {bbl.phdthesis}
  1575. { "Th\`ese de Doctorat" }
  1576. FUNCTION {bbl.first}
  1577. %<!ord>{ "Premi\`ere" }
  1578. %<ord>{ "1$^{\mbox{\scriptsize re}}$" }
  1579. FUNCTION {bbl.second}
  1580. %<!ord>{ "Deuxi\`eme" }
  1581. %<ord>{ "2$^{\mbox{\scriptsize e}}$" }
  1582. FUNCTION {bbl.third}
  1583. %<!ord>{ "Troisi\`eme" }
  1584. %<ord>{ "3$^{\mbox{\scriptsize e}}$" }
  1585. FUNCTION {bbl.fourth}
  1586. %<!ord>{ "Quatri\`eme" }
  1587. %<ord>{ "4$^{\mbox{\scriptsize e}}$" }
  1588. FUNCTION {bbl.fifth}
  1589. %<!ord>{ "Cinqui\`eme" }
  1590. %<ord>{ "5$^{\mbox{\scriptsize e}}$" }
  1591. FUNCTION {bbl.th}
  1592. { "$^{\mbox{\scriptsize e}}$" }
  1593. %</french>
  1594. %    \end{macrocode}
  1595. % The Esperanto translations of the explicit word functions.
  1596. %    \begin{macrocode}
  1597. %<*espo>
  1598.  % The language selected here is ESPERANTO
  1599. FUNCTION {bbl.and}
  1600. { "kaj"}
  1601. FUNCTION {bbl.editors}
  1602. %<!ed>{ "redaktoroj" }
  1603. %<ed>{ "red-oj" }
  1604. FUNCTION {bbl.editor}
  1605. %<!ed>{ "redaktoro" }
  1606. %<ed>{ "red-o" }
  1607. FUNCTION {bbl.edby}
  1608. { "redaktito de" }
  1609. FUNCTION {bbl.edition}
  1610. %<!abr>{ "eldono" }
  1611. %<abr>{ "eld." }
  1612. FUNCTION {bbl.vvolume}
  1613. %<!abr>{ "Volumo" }
  1614. %<abr>{ "Vol." }
  1615. FUNCTION {bbl.volume}
  1616. %<!abr>{ "volumo" }
  1617. %<abr>{ "vol." }
  1618. FUNCTION {bbl.of}
  1619. { "el" }
  1620. FUNCTION {bbl.nnumber}
  1621. %<!abr>{ "Numero" }
  1622. %<abr>{ "N-ro" }
  1623. FUNCTION {bbl.number}
  1624. %<!abr>{ "numero" }
  1625. %<abr>{ "n-ro" }
  1626. FUNCTION {bbl.in}
  1627. { "en" }
  1628. FUNCTION {bbl.iin}
  1629. { "En" }
  1630. FUNCTION {bbl.pages}
  1631. %<!pp>{ "pa\^goj" }
  1632. %<pp>{ "pp." }
  1633. FUNCTION {bbl.page}
  1634. %<!pp>{ "pa\^go" }
  1635. %<pp>{ "p\^g" }
  1636. FUNCTION {bbl.chapter}
  1637. %<!abr>{ "\^capitro" }
  1638. %<abr>{ "\^cap." }
  1639. FUNCTION {bbl.techrep}
  1640. %<!abr>{ "Teknica Raporto" }
  1641. %<abr>{ "Tek. Rap." }
  1642. FUNCTION {bbl.mthesis}
  1643. { "Magistra Tezo" }
  1644. FUNCTION {bbl.phdthesis}
  1645. { "Doktora Tezo" }
  1646. FUNCTION {bbl.first}
  1647. %<!ord>{ "Unua" }
  1648. %<ord>{ "1-a" }
  1649. FUNCTION {bbl.second}
  1650. %<!ord>{ "Dua" }
  1651. %<ord>{ "2-a" }
  1652. FUNCTION {bbl.third}
  1653. %<!ord>{ "Tria" }
  1654. %<ord>{ "3-a" }
  1655. FUNCTION {bbl.fourth}
  1656. %<!ord>{ "Kvara" }
  1657. %<ord>{ "4-a" }
  1658. FUNCTION {bbl.fifth}
  1659. %<!ord>{ "Kvina" }
  1660. %<ord>{ "5-a" }
  1661. FUNCTION {bbl.th}
  1662. { "-a" }
  1663. %</espo>
  1664. %    \end{macrocode}
  1665. % \end{macro}
  1666. %    \begin{macrocode}
  1667. INTEGERS { nameptr namesleft numnames }
  1668. FUNCTION {format.names}
  1669. { 's :=
  1670.   #1 'nameptr :=
  1671.   s num.names$ 'numnames :=
  1672.   numnames 'namesleft :=
  1673.     { namesleft #0 > }
  1674. %<*!nm-rev1>
  1675.     { s nameptr 
  1676. %<!nm-init&!nm-rev&!nm-rv>      "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
  1677. %<nm-init>      "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=
  1678. %<!nm-init&nm-rev>      "{vv~}{ll}{, jj}{, f.}" format.name$ 't := 
  1679. %<!nm-init&!nm-rev&nm-rv>      "{vv~}{ll}{ jj}{ f{~}}" format.name$ 't := 
  1680. %</!nm-rev1>
  1681. %<*nm-rev1>
  1682.     { nameptr #1 >
  1683.         { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := }
  1684.         { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't := }
  1685.       if$
  1686. %</nm-rev1>
  1687.       nameptr #1 >
  1688.         { 
  1689. %<*nmlm>
  1690. %<m1>          nameptr #2 =
  1691. %<m2>          nameptr #3 =
  1692. %<m3>          nameptr #4 =
  1693. %<m4>          nameptr #5 =
  1694. %<m5>          nameptr #6 =
  1695. %<x1>          numnames #1 > and
  1696. %<x2>          numnames #2 > and
  1697. %<x3>          numnames #3 > and
  1698. %<x4>          numnames #4 > and
  1699. %<x5>          numnames #5 > and
  1700. %<x6>          numnames #6 > and
  1701. %<x7>          numnames #7 > and
  1702. %<x8>          numnames #8 > and
  1703. %<x9>          numnames #9 > and
  1704.             { "others" 't :=
  1705.               #1 'namesleft := }
  1706.             'skip$
  1707.           if$
  1708. %</nmlm>
  1709.           namesleft #1 >
  1710.             { ", " * t * }
  1711.             {
  1712. %<and-com|and-x>              "," *
  1713. %<*!and-xcom&!and-com&!and-x>
  1714.               numnames #2 >
  1715.                 { "," * }
  1716.                 'skip$
  1717.               if$
  1718. %</!and-xcom&!and-com&!and-x>
  1719.               t "others" =
  1720. %<!etal-it>                { " et~al." * }
  1721. %<etal-it>                { " " * "et~al." emphasize * }
  1722. %<!amper&!and-x>                { bbl.and space.word * t * }
  1723. %<amper&!and-x>                { " \& " * t * }
  1724. %<and-x&!and-com>                { " " * t * }
  1725.               if$
  1726.             }
  1727.           if$
  1728.         }
  1729.         't
  1730.       if$
  1731.       nameptr #1 + 'nameptr :=
  1732.       namesleft #1 - 'namesleft :=
  1733.     }
  1734.   while$
  1735. FUNCTION {format.names.ed}
  1736. { 's :=
  1737.   #1 'nameptr :=
  1738.   s num.names$ 'numnames :=
  1739.   numnames 'namesleft :=
  1740.     { namesleft #0 > }
  1741.     { s nameptr 
  1742. %<!nm-init&!nm-rev&!nm-rev1&!nm-rv>      "{ff~}{vv~}{ll}{, jj}" 
  1743. %<nm-init|nm-rev|nm-rev1>      "{f.~}{vv~}{ll}{, jj}" 
  1744. %<!nm-init&!nm-rev&!nm-rev1&nm-rv>      "{f{~}~}{vv~}{ll}{ jj}" 
  1745.       format.name$ 't := 
  1746.       nameptr #1 >
  1747.         { 
  1748.           namesleft #1 >
  1749.             { ", " * t * }
  1750.             {
  1751. %<and-com|and-x>              "," *
  1752. %<*!and-xcom&!and-com&!and-x>
  1753.               numnames #2 >
  1754.                 { "," * }
  1755.                 'skip$
  1756.               if$
  1757. %</!and-xcom&!and-com&!and-x>
  1758.               t "others" =
  1759. %<!etal-it>                { " et~al." * }
  1760. %<etal-it>                { " " * "et~al." emphasize * }
  1761. %<!amper&!and-x>                { bbl.and space.word * t * }
  1762. %<amper&!and-x>                { " \& " * t * }
  1763. %<and-x&!and-com>                { " " * t * }
  1764.               if$
  1765.             }
  1766.           if$
  1767.         }
  1768.         't
  1769.       if$
  1770.       nameptr #1 + 'nameptr :=
  1771.       namesleft #1 - 'namesleft :=
  1772.     }
  1773.   while$
  1774. %<*ay>
  1775. FUNCTION {format.key}                   
  1776. { empty$
  1777.     { key field.or.null }
  1778.     { "" }
  1779.   if$
  1780. %</ay>
  1781. FUNCTION {format.authors}
  1782. { author empty$
  1783.     { "" }
  1784. %<!nmft-sc&!nmft-bf&!nmft-it>    { author format.names }
  1785. %<nmft-sc>    { "{\sc " author format.names * "}" * }
  1786. %<!nmft-sc&nmft-bf>    { author format.names bolden }
  1787. %<!nmft-sc&!nmft-bf&nmft-it>    { author format.names emphasize }
  1788.   if$
  1789. FUNCTION {format.editors}
  1790. { editor empty$
  1791.     { "" }
  1792. %<!nmft-sc&!nmft-bf&!nmft-it>    { editor format.names 
  1793. %<nmft-sc>    { "{\sc " editor format.names * "}" * 
  1794. %<!nmft-sc&nmft-bf>    { editor format.names bolden 
  1795. %<!nmft-sc&!nmft-bf&nmft-it>    { editor format.names emphasize 
  1796.       editor num.names$ #1 >
  1797.         { ", " * bbl.editors * }
  1798.         { ", " * bbl.editor * }
  1799.       if$
  1800.     }
  1801.   if$
  1802. FUNCTION {format.in.editors}
  1803. { editor empty$
  1804.     { "" }
  1805.     { editor format.names.ed
  1806. %<*!edby>
  1807.       editor num.names$ #1 >
  1808.         { ", " * bbl.editors * }
  1809.         { ", " * bbl.editor * }
  1810.       if$
  1811. %</!edby>
  1812.     }
  1813.   if$
  1814. FUNCTION {format.title}
  1815. { title empty$
  1816.     { "" }
  1817. %<!atit-u>    { title "t" change.case$ 
  1818. %<atit-u>    { title 
  1819. %<tit-it>      emphasize
  1820. %<!tit-it&tit-q>      "`" swap$ * "'" *
  1821. %<!tit-it&!tit-q&tit-qq>      "``" swap$ * "''" *
  1822.     }
  1823.   if$
  1824. FUNCTION {n.dashify}
  1825. { 't :=
  1826.     { t empty$ not }
  1827.     { t #1 #1 substring$ "-" =
  1828.         { t #1 #2 substring$ "--" = not
  1829.             { "--" *
  1830.               t #2 global.max$ substring$ 't :=
  1831.             }
  1832.             {   { t #1 #1 substring$ "-" = }
  1833.                 { "-" *
  1834.                   t #2 global.max$ substring$ 't :=
  1835.                 }
  1836.               while$
  1837.             }
  1838.           if$
  1839.         }
  1840.         { t #1 #1 substring$ *
  1841.           t #2 global.max$ substring$ 't :=
  1842.         }
  1843.       if$
  1844.     }
  1845.   while$
  1846. %    \end{macrocode}
  1847. % \begin{macro}{`word.in'}
  1848. % \changes{2.0}{1994 Jan 31}{Function {\tt word.in} constructed out of 
  1849. %        {\tt bbl.in} or {\tt bbl.iin}.}
  1850. % The function {\tt word.in} prints the word ``in'' for references that are
  1851. % contained in a larger work, or in conference proceedings. One may have a
  1852. % colon after the word with the option {\tt in-col}. If blocks of text are
  1853. % to be separated with commas (option {\tt blk-com}) then the word remains
  1854. % in lower case, as it is defined in {\tt bbl.in}; but if blocks act as
  1855. % sentences, then it must be capitalized by using {\tt bbl.iin}.
  1856. %    \begin{macrocode}
  1857. FUNCTION {word.in}
  1858. %<blk-com>{ bbl.in
  1859. %<!blk-com>{ bbl.iin
  1860. %<in-col>  ":" *
  1861.   " " * }
  1862. %    \end{macrocode}
  1863. % \end{macro}
  1864. %    \begin{macrocode}
  1865. %<*ay>
  1866. FUNCTION {format.date}
  1867. { year duplicate$ empty$
  1868.     { "empty year in " cite$ * "; set to ????" * warning$ 
  1869.        pop$ "????" }
  1870.     'skip$
  1871.   if$
  1872. %<yr-par|yr-brk|yr-col>  before.all 'output.state :=
  1873. %<yr-par>  " (" swap$ * extra.label * ")" *
  1874. %<!yr-par&yr-brk>  " [" swap$ * extra.label * "]" *
  1875. %<!yr-par&!yr-brk&yr-col>  ": " swap$ * extra.label *
  1876. %<!yr-par&!yr-brk&!yr-col>  extra.label *
  1877. %</ay>
  1878. %<*!ay>
  1879. FUNCTION {format.date}
  1880. { year empty$
  1881.     { month empty$
  1882.         { "" }
  1883.         { "there's a month but no year in " cite$ * warning$
  1884.           month
  1885.         }
  1886.       if$
  1887.     }
  1888.     {
  1889. %<yr-par|yr-brk|yr-col>      before.all 'output.state :=
  1890. %<yr-par>      " (" year * ")" *
  1891. %<!yr-par&yr-brk>      " [" year * "]" *
  1892. %<!yr-par&!yr-brk&yr-col>      ": " year *
  1893. %<*!yr-par&!yr-brk&!yr-col>
  1894.       month empty$
  1895.         'year
  1896.         { month " " * year * }
  1897.       if$
  1898. %</!yr-par&!yr-brk&!yr-col>
  1899.     }
  1900.   if$
  1901. %</!ay>
  1902. FUNCTION {format.btitle}
  1903. %<!btit-rm>{ title emphasize
  1904. %<btit-rm>{ title 
  1905. FUNCTION {tie.or.space.connect}
  1906. { duplicate$ text.length$ #3 <
  1907.     { "~" }
  1908.     { " " }
  1909.   if$
  1910.   swap$ * *
  1911. FUNCTION {either.or.check}
  1912. { empty$
  1913.     'pop$
  1914.     { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  1915.   if$
  1916. FUNCTION {format.bvolume}
  1917. { volume empty$
  1918.     { "" }
  1919.     { bbl.volume volume tie.or.space.connect
  1920.       series empty$
  1921.         'skip$
  1922.         { bbl.of space.word * series emphasize * }
  1923.       if$
  1924.       "volume and number" number either.or.check
  1925.     }
  1926.   if$
  1927. FUNCTION {format.number.series}
  1928. { volume empty$
  1929.     { number empty$
  1930.         { series field.or.null }
  1931.         { output.state mid.sentence =
  1932.             { bbl.number }
  1933.             { bbl.nnumber }
  1934.           if$
  1935.           number tie.or.space.connect
  1936.           series empty$
  1937.             { "there's a number but no series in " cite$ * warning$ }
  1938.             { bbl.in space.word * series * }
  1939.           if$
  1940.         }
  1941.       if$
  1942.     }
  1943.     { "" }
  1944.   if$
  1945. %    \end{macrocode}
  1946. % \begin{macro}{`is.num'}
  1947. % \changes{2.0}{1994 Jan 31}{Add function to test for digit.}
  1948. % This function takes the single-character string on the stack and returns
  1949. % 1 if it is a digit, else 0.
  1950. %    \begin{macrocode}
  1951. FUNCTION {is.num}
  1952. { chr.to.int$ 
  1953.   duplicate$ "0" chr.to.int$ < not 
  1954.   swap$ "9" chr.to.int$ > not and
  1955. %    \end{macrocode}
  1956. % \end{macro}
  1957. % \begin{macro}{`extract.num'}
  1958. % \changes{2.0}{1994 Jan 31}{Add function to extract leading number from
  1959. %        a literal string.}
  1960. % This function tests the string on the stack to see if it begins with a
  1961. % number. If so, that number is left on the stack; if the string contains
  1962. % no numbers at the start, it is left unchanged. The idea is to convert
  1963. % `1st' to `1' and leave `first' as is. This is used by {\tt
  1964. % convert.edition}.
  1965. %    \begin{macrocode}
  1966. FUNCTION {extract.num}
  1967. { duplicate$ 't :=
  1968.   "" 's :=
  1969.   { t empty$ not }
  1970.   { t #1 #1 substring$
  1971.     t #2 global.max$ substring$ 't :=
  1972.     duplicate$ is.num
  1973.       { s swap$ * 's := }
  1974.       { pop$ "" 't := }
  1975.     if$
  1976.   while$
  1977.   s empty$
  1978.     'skip$ 
  1979.     { pop$ s }
  1980.   if$
  1981. %    \end{macrocode}
  1982. % \end{macro}
  1983. % \begin{macro}{`eng.ord'}
  1984. % \changes{2.0}{1994 Jan 31}{Add function to format English ordinals.}
  1985. % This function adds English endings for ordinals 1, 2, 3. However, if
  1986. % the second last digit is 1, then the ending is `th' for all last digits.
  1987. % So far, all other languages included do not have this problem, and it is
  1988. % sufficient to add the `th' equivalent. This might change with further
  1989. % languages. 
  1990. % This function must be included with {\tt babel} too, since that includes
  1991. % English. This means that the language definition files must also provide
  1992. % for |\bblst|, |\bblnd|, and |\bblrd|, setting them all equal to |\bblth|.
  1993. %^^A NEWLANGUAGE: read the above paragraphs and decide if your language
  1994. %^^A              needs something like this too. If so, start hacking.
  1995. %    \begin{macrocode}
  1996. %<*english|babel>
  1997. FUNCTION {eng.ord}
  1998. { duplicate$ "1" swap$ * 
  1999.   #-2 #1 substring$ "1" =
  2000.      { bbl.th * }
  2001.      { duplicate$ #-1 #1 substring$ 
  2002.        duplicate$ "1" =
  2003.          { pop$ bbl.st * }
  2004.          { duplicate$ "2" =
  2005.              { pop$ bbl.nd * }
  2006.              { "3" =
  2007.                  { bbl.rd * }
  2008.                  { bbl.th * }
  2009.                if$
  2010.              }
  2011.            if$
  2012.           }
  2013.        if$
  2014.      }         
  2015.    if$
  2016. %</english|babel>
  2017. %    \end{macrocode}
  2018. % \end{macro}
  2019. % \begin{macro}{`convert.edition'}
  2020. % \changes{2.0}{1994 Jan 31}{Add function to convert {\tt edition} entry
  2021. %      text from word to a function}
  2022. % The function {\tt convert.edition} takes the text in the field {\tt
  2023. % edition} and changes it to the language-specific equivalent. As
  2024. % originally planned for \btx, this field should contain the words `First',
  2025. % `Second', etc. Being so explicit, it is not so easy to translate, nor to
  2026. % convert to `1st', `2nd', etc., if one wanted. This function carries out
  2027. % the translation, by changing `first' or `1' to {\tt bbl.first}, and so
  2028. % on. The field is reduced to lower case to make it case insensitive. If no
  2029. % translation is found, then the original text in {\tt edition} is used
  2030. % instead, as it stands. However, if the original is a number greater than
  2031. % the maximum for which text is provided, then {\tt bbl.th} is added to
  2032. % it.
  2033. %    \begin{macrocode}
  2034. FUNCTION {convert.edition}
  2035. { edition extract.num "l" change.case$ 's :=
  2036.   s "first" = s "1" = or
  2037.     { bbl.first 't := }
  2038.     { s "second" = s "2" = or
  2039.         { bbl.second 't := }
  2040.         { s "third" = s "3" = or
  2041.             { bbl.third 't := }
  2042.             { s "fourth" = s "4" = or
  2043.                 { bbl.fourth 't := }
  2044.                 { s "fifth" = s "5" = or
  2045.                     { bbl.fifth 't := }
  2046.                     { s #1 #1 substring$ is.num
  2047. %<!english&!babel>                        { s bbl.th * 't := }
  2048. %<english|babel>                        { s eng.ord 't := }
  2049.                         { edition 't := }
  2050.                       if$
  2051.                     }
  2052.                   if$
  2053.                 }
  2054.               if$
  2055.             }
  2056.           if$
  2057.         }
  2058.       if$
  2059.     }
  2060.   if$
  2061. %    \end{macrocode}
  2062. % \end{macro}
  2063. % \begin{macro}{`format.edition'}
  2064. % \changes{2.0}{1994 Jan 31}{Add call to {\tt convert.edition}}
  2065. % This function formats the text for the edition specification, such as
  2066. % ``Second edition''. It combines the edition number with the word
  2067. % `edition'. 
  2068. %    \begin{macrocode}
  2069. FUNCTION {format.edition}
  2070. { edition empty$
  2071.     { "" }
  2072.     { output.state mid.sentence =
  2073.         { convert.edition "l" change.case$ " " * bbl.edition * }
  2074.         { convert.edition "t" change.case$ " " * bbl.edition * }
  2075.       if$
  2076.     }
  2077.   if$
  2078. %    \end{macrocode}
  2079. % \end{macro}
  2080. %    \begin{macrocode}
  2081. INTEGERS { multiresult }
  2082. FUNCTION {multi.page.check}
  2083. { 't :=
  2084.   #0 'multiresult :=
  2085.     { multiresult not
  2086.       t empty$ not
  2087.       and
  2088.     }
  2089.     { t #1 #1 substring$
  2090.       duplicate$ "-" =
  2091.       swap$ duplicate$ "," =
  2092.       swap$ "+" =
  2093.       or or
  2094.         { #1 'multiresult := }
  2095.         { t #2 global.max$ substring$ 't := }
  2096.       if$
  2097.     }
  2098.   while$
  2099.   multiresult
  2100. FUNCTION {format.pages}
  2101. { pages empty$
  2102.     { "" }
  2103.     { pages multi.page.check
  2104.         { bbl.pages pages n.dashify tie.or.space.connect }
  2105.         { bbl.page pages tie.or.space.connect }
  2106.       if$
  2107.     }
  2108.   if$
  2109. %<*jpg-1|pg-1>
  2110. FUNCTION {first.page}
  2111. { 't :=
  2112.     {  t empty$ not t #1 #1 substring$ "-" = not and }
  2113.     { t #1 #1 substring$ *
  2114.       t #2 global.max$ substring$ 't :=
  2115.     }
  2116.   while$
  2117. %</jpg-1|pg-1>
  2118. FUNCTION {format.vol.num.pages}
  2119. { volume field.or.null
  2120. %<vol-bf&!vol-2bf>  bolden
  2121. %<!vol-bf&!vol-2bf&vol-it>  emphasize
  2122.   number empty$
  2123.     'skip$
  2124.     { "(" number * ")" * *
  2125. %<!vol-bf&vol-2bf>      bolden
  2126.       volume empty$
  2127.         { "there's a number but no volume in " cite$ * warning$ }
  2128.         'skip$
  2129.       if$
  2130.     }
  2131.   if$
  2132.   pages empty$
  2133.     'skip$
  2134.     { duplicate$ empty$
  2135.         { pop$ format.pages }
  2136. %<!volp-com&!jpg-1>        { ":" * pages n.dashify * }
  2137. %<volp-com&!jpg-1>        { ", " * pages n.dashify * }
  2138. %<!volp-com&jpg-1>        { ":" * pages first.page * }
  2139. %<volp-com&jpg-1>        { ", " * pages first.page * }
  2140.       if$
  2141.     }
  2142.   if$
  2143. FUNCTION {format.chapter.pages}
  2144. { chapter empty$
  2145.     'format.pages
  2146.     { type empty$
  2147.         { bbl.chapter }
  2148.         { type "l" change.case$ }
  2149.       if$
  2150.       chapter tie.or.space.connect
  2151.       pages empty$
  2152.         'skip$
  2153.         { ", " * format.pages * }
  2154.       if$
  2155.     }
  2156.   if$
  2157. FUNCTION {format.in.ed.booktitle}
  2158. { booktitle empty$
  2159.     { "" }
  2160.     { editor empty$
  2161.         { word.in booktitle emphasize * }
  2162. %<!edby>        { word.in format.in.editors * ", " * booktitle emphasize * }
  2163. %<edby>        { word.in booktitle emphasize * ", " * bbl.edby  * " " * 
  2164. %<edby>          format.in.editors * }
  2165.       if$
  2166.     }
  2167.   if$
  2168. %<*!ay>
  2169. FUNCTION {empty.misc.check}
  2170. { author empty$ title empty$ howpublished empty$
  2171.   month empty$ year empty$ note empty$
  2172.   and and and and and
  2173.   key empty$ not and
  2174.     { "all relevant fields are empty in " cite$ * warning$ }
  2175.     'skip$
  2176.   if$
  2177. %</!ay>
  2178. FUNCTION {format.thesis.type}
  2179. { type empty$
  2180.     'skip$
  2181.     { pop$
  2182.       type "t" change.case$
  2183.     }
  2184.   if$
  2185. FUNCTION {format.tr.number}
  2186. { type empty$
  2187.     { bbl.techrep }
  2188.     'type
  2189.   if$
  2190.   number empty$
  2191.     { "t" change.case$ }
  2192.     { number tie.or.space.connect }
  2193.   if$
  2194. FUNCTION {format.article.crossref}
  2195. %<*!ay>
  2196.   key empty$
  2197.     { journal empty$
  2198.         { "need key or journal for " cite$ * " to crossref " * crossref *
  2199.           warning$
  2200.           ""
  2201.         }
  2202.         { word.in "{\em " * journal * "\/} " * }
  2203.       if$
  2204.     }
  2205.     { word.in key * " " *}
  2206.   if$
  2207. %</!ay>
  2208. %<ay>  word.in
  2209.   "\cite{" * crossref * "}" *
  2210. %<*!ay>
  2211. FUNCTION {format.crossref.editor}
  2212. { editor #1 "{vv~}{ll}" format.name$
  2213.   editor num.names$ duplicate$
  2214.   #2 >
  2215. %<!etal-it>    { pop$ " et~al." * }
  2216. %<etal-it>    { pop$ " " * "et~al." emphasize * }
  2217.     { #2 <
  2218.         'skip$
  2219.         { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2220. %<!etal-it>            { " et~al." * }
  2221. %<etal-it>            { " " * "et~al." emphasize * }
  2222. %<!amper>            { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
  2223. %<amper>            { " \& " * editor #2 "{vv~}{ll}" format.name$ * }
  2224.           if$
  2225.         }
  2226.       if$
  2227.     }
  2228.   if$
  2229. %</!ay>
  2230. FUNCTION {format.book.crossref}
  2231. { volume empty$
  2232.     { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  2233.       word.in
  2234.     }
  2235. %<(blk-com|blk-tit)>    { bbl.volume volume tie.or.space.connect
  2236. %<!(blk-com|blk-tit)>    { bbl.vvolume volume tie.or.space.connect
  2237.       bbl.of space.word * 
  2238.     }
  2239.   if$
  2240. %<*!ay>
  2241.   editor empty$
  2242.   editor field.or.null author field.or.null =
  2243.     { key empty$
  2244.         { series empty$
  2245.             { "need editor, key, or series for " cite$ * " to crossref " *
  2246.               crossref * warning$
  2247.               "" *
  2248.             }
  2249.             { "{\em " * series * "\/}" * }
  2250.           if$
  2251.         }
  2252.         { key * }
  2253.       if$
  2254.     }
  2255.     { format.crossref.editor * }
  2256.   if$
  2257. %</!ay>
  2258.   "\cite{" * crossref * "}" *
  2259. FUNCTION {format.incoll.inproc.crossref}
  2260. %<*!ay>
  2261.   editor empty$
  2262.   editor field.or.null author field.or.null =
  2263.     { key empty$
  2264.         { booktitle empty$
  2265.             { "need editor, key, or booktitle for " cite$ * " to crossref " *
  2266.               crossref * warning$
  2267.               ""
  2268.             }
  2269.             { word.in "{\em " * booktitle * "\/} " * }
  2270.           if$
  2271.         }
  2272.         { word.in key * " " *}
  2273.       if$
  2274.     }
  2275.     { word.in format.crossref.editor * " " *}
  2276.   if$
  2277. %</!ay>
  2278. %<ay>  word.in
  2279.   "\cite{" * crossref * "}" *
  2280. FUNCTION {article}
  2281. { output.bibitem
  2282.   format.authors "author" output.check
  2283. %<ay>  author format.key output
  2284. %<dt-beg>  format.date "year" output.check
  2285. %<!blk-com&!blk-tit>  new.block
  2286. %<!jtit-x>  format.title "title" output.check
  2287. %<!blk-com&!blk-tit>  new.block
  2288. %<blk-tit>  new.sentence
  2289.   crossref missing$
  2290.     { journal emphasize "journal" output.check
  2291. %<jnm-x>      " " * before.all 'output.state :=
  2292.       format.vol.num.pages output
  2293. %<!dt-beg&!dt-end>      format.date "year" output.check
  2294.     }
  2295.     { format.article.crossref output.nonnull
  2296.       format.pages output
  2297.     }
  2298.   if$
  2299. %<!blk-com&!blk-tit>  new.block
  2300.   note output
  2301. %<*!dt-beg&dt-end>
  2302. %<!blk-com&!blk-tit>  new.block 
  2303.   format.date "year" output.check
  2304. %</!dt-beg&dt-end>
  2305.   fin.entry
  2306. FUNCTION {book}
  2307. { output.bibitem
  2308.   author empty$
  2309.     { format.editors "author and editor" output.check
  2310. %<ay>      editor format.key output
  2311.     }
  2312.     { format.authors output.nonnull
  2313.       crossref missing$
  2314.         { "author and editor" editor either.or.check }
  2315.         'skip$
  2316.       if$
  2317.     }
  2318.   if$
  2319. %<dt-beg>  format.date "year" output.check
  2320. %<!blk-com&!blk-tit>  new.block
  2321.   format.btitle "title" output.check
  2322.   crossref missing$
  2323.     { format.bvolume output
  2324. %<!blk-com&!blk-tit>      new.block
  2325. %<blk-tit>  new.sentence
  2326.       format.number.series output
  2327.       new.sentence
  2328.       publisher "publisher" output.check
  2329.       address output
  2330.     }
  2331.     {
  2332. %<!blk-com&!blk-tit>      new.block
  2333. %<blk-tit>  new.sentence
  2334.       format.book.crossref output.nonnull
  2335.     }
  2336.   if$
  2337.   format.edition output
  2338. %<!dt-beg&!dt-end>  format.date "year" output.check
  2339. %<!blk-com&!blk-tit>  new.block
  2340.   note output
  2341. %<*!dt-beg&dt-end>
  2342. %<!blk-com&!blk-tit>  new.block 
  2343.   format.date "year" output.check
  2344. %</!dt-beg&dt-end>
  2345.   fin.entry
  2346. FUNCTION {booklet}
  2347. { output.bibitem
  2348.   format.authors output
  2349. %<ay>  author format.key output
  2350. %<ay&dt-beg>  format.date "year" output.check
  2351. %<!ay&dt-beg>  format.date output
  2352. %<!blk-com&!blk-tit>  new.block
  2353.   format.title "title" output.check
  2354. %<!blk-com&!blk-tit>  new.block
  2355. %<blk-tit>  new.sentence
  2356.   howpublished output
  2357.   address output
  2358. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  2359. %<!ay&!dt-beg&!dt-end>  format.date output
  2360. %<!blk-com&!blk-tit>  new.block
  2361.   note output
  2362. %<*ay&!dt-beg&dt-end>
  2363. %<!blk-com&!blk-tit>  new.block 
  2364.   format.date "year" output.check
  2365. %</ay&!dt-beg&dt-end>
  2366. %<*!ay&!dt-beg&dt-end>
  2367. %<!blk-com&!blk-tit>  new.block 
  2368.   format.date output
  2369. %</!ay&!dt-beg&dt-end>
  2370.   fin.entry
  2371. FUNCTION {inbook}
  2372. { output.bibitem
  2373.   author empty$
  2374.     { format.editors "author and editor" output.check
  2375. %<ay>      editor format.key output
  2376.     }
  2377.     { format.authors output.nonnull
  2378.       crossref missing$
  2379.         { "author and editor" editor either.or.check }
  2380.         'skip$
  2381.       if$
  2382.     }
  2383.   if$
  2384. %<dt-beg>  format.date "year" output.check
  2385. %<!blk-com&!blk-tit>  new.block
  2386.   format.btitle "title" output.check
  2387.   crossref missing$
  2388.     { format.bvolume output
  2389.       format.chapter.pages "chapter and pages" output.check
  2390. %<!blk-com&!blk-tit>      new.block
  2391. %<blk-tit>  new.sentence
  2392.       format.number.series output
  2393.       new.sentence
  2394.       publisher "publisher" output.check
  2395.       address output
  2396.     }
  2397.     { format.chapter.pages "chapter and pages" output.check
  2398. %<!blk-com&!blk-tit>      new.block
  2399. %<blk-tit>  new.sentence
  2400.       format.book.crossref output.nonnull
  2401.     }
  2402.   if$
  2403.   format.edition output
  2404. %<!dt-beg&!dt-end>  format.date "year" output.check
  2405. %<!blk-com&!blk-tit>  new.block
  2406.   note output
  2407. %<*!dt-beg&dt-end>
  2408. %<!blk-com&!blk-tit>  new.block 
  2409.   format.date "year" output.check
  2410. %</!dt-beg&dt-end>
  2411.   fin.entry
  2412. FUNCTION {incollection}
  2413. { output.bibitem
  2414.   format.authors "author" output.check
  2415. %<ay>  author format.key output
  2416. %<dt-beg>  format.date "year" output.check
  2417. %<!blk-com&!blk-tit>  new.block
  2418. %<!jtit-x>  format.title "title" output.check
  2419. %<!blk-com&!blk-tit>  new.block
  2420. %<blk-tit>  new.sentence
  2421.   crossref missing$
  2422.     { format.in.ed.booktitle "booktitle" output.check
  2423.       format.bvolume output
  2424.       format.number.series output
  2425.       format.chapter.pages output
  2426.       new.sentence
  2427.       publisher "publisher" output.check
  2428.       address output
  2429.       format.edition output
  2430. %<!dt-beg&!dt-end>      format.date "year" output.check
  2431.     }
  2432.     { format.incoll.inproc.crossref output.nonnull
  2433.       format.chapter.pages output
  2434.     }
  2435.   if$
  2436. %<!blk-com&!blk-tit>  new.block
  2437.   note output
  2438. %<*!dt-beg&dt-end>
  2439. %<!blk-com&!blk-tit>  new.block 
  2440.   format.date "year" output.check
  2441. %</!dt-beg&dt-end>
  2442.   fin.entry
  2443. FUNCTION {inproceedings}
  2444. { output.bibitem
  2445.   format.authors "author" output.check
  2446. %<ay>  author format.key output
  2447. %<dt-beg>  format.date "year" output.check
  2448. %<!blk-com&!blk-tit>  new.block
  2449. %<!jtit-x>  format.title "title" output.check
  2450. %<!blk-com&!blk-tit>  new.block
  2451. %<blk-tit>  new.sentence
  2452.   crossref missing$
  2453.     { format.in.ed.booktitle "booktitle" output.check
  2454.       format.bvolume output
  2455.       format.number.series output
  2456.       format.pages output
  2457. %<*!ay>
  2458.       address empty$
  2459.         { organization publisher new.sentence.checkb
  2460.           organization output
  2461.           publisher output
  2462.           format.date "year" output.check
  2463.         }
  2464.         { address output.nonnull
  2465. %<!dt-beg&!dt-end>          format.date "year" output.check
  2466.           new.sentence
  2467.           organization output
  2468.           publisher output
  2469.         }
  2470.       if$
  2471. %</!ay>
  2472. %<*ay>
  2473.       address output
  2474.       new.sentence
  2475.       organization output
  2476.       publisher output
  2477. %<!dt-beg&!dt-end>  format.date "year" output.check
  2478. %</ay>
  2479.     }
  2480.     { format.incoll.inproc.crossref output.nonnull
  2481.       format.pages output
  2482.     }
  2483.   if$
  2484. %<!blk-com&!blk-tit>  new.block
  2485.   note output
  2486. %<*!dt-beg&dt-end>
  2487. %<!blk-com&!blk-tit>  new.block 
  2488.   format.date "year" output.check
  2489. %</!dt-beg&dt-end>
  2490.   fin.entry
  2491. FUNCTION {conference} { inproceedings }
  2492. %<*ay>
  2493. FUNCTION {manual}
  2494. { output.bibitem
  2495.   format.authors output
  2496.   author format.key output
  2497. %<dt-beg>  format.date "year" output.check
  2498. %<!blk-com&!blk-tit>  new.block
  2499.   format.btitle "title" output.check
  2500. %<blk-tit>  new.sentence
  2501. %<!blk-com&!blk-tit>  organization address new.block.checkb
  2502.   organization output
  2503.   address output
  2504.   format.edition output
  2505. %<!dt-beg&!dt-end>  format.date "year" output.check
  2506. %<!blk-com&!blk-tit>  new.block
  2507.   note output
  2508. %<*!dt-beg&dt-end>
  2509. %<!blk-com&!blk-tit>  new.block 
  2510.   format.date "year" output.check
  2511. %</!dt-beg&dt-end>
  2512.   fin.entry
  2513. %</ay>
  2514. %<*!ay>
  2515. FUNCTION {manual}
  2516. { output.bibitem
  2517.   author empty$
  2518.     { organization empty$
  2519.         'skip$
  2520.         { organization output.nonnull
  2521.           address output
  2522.         }
  2523.       if$
  2524.     }
  2525.     { format.authors output.nonnull }
  2526.   if$
  2527. %<ay&dt-beg>  format.date "year" output.check
  2528. %<!ay&dt-beg>  format.date output
  2529. %<!blk-com&!blk-tit>  new.block
  2530.   format.btitle "title" output.check
  2531. %<blk-tit>  new.sentence
  2532.   author empty$
  2533.     { organization empty$
  2534.     {
  2535. %<!blk-com&!blk-tit>          address new.block.checka
  2536.           address output
  2537.         }
  2538.         'skip$
  2539.       if$
  2540.     }
  2541.     {
  2542. %<!blk-com&!blk-tit>      organization address new.block.checkb
  2543.       organization output
  2544.       address output
  2545.     }
  2546.   if$
  2547.   format.edition output
  2548. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  2549. %<!ay&!dt-beg&!dt-end>  format.date output
  2550. %<!blk-com&!blk-tit>  new.block
  2551.   note output
  2552. %<*ay&!dt-beg&dt-end>
  2553. %<!blk-com&!blk-tit>  new.block 
  2554.   format.date "year" output.check
  2555. %</ay&!dt-beg&dt-end>
  2556. %<*!ay&!dt-beg&dt-end>
  2557. %<!blk-com&!blk-tit>  new.block 
  2558.   format.date output
  2559. %</!ay&!dt-beg&dt-end>
  2560.   fin.entry
  2561. %</!ay>
  2562. %    \end{macrocode}
  2563. % \begin{macro}{`masterthesis'}
  2564. % \changes{2.0}{1994 Feb 7}{Add {\tt thtit-a} to format thesis titles like
  2565. %         articles instead of books.}
  2566. % To format a master's thesis.
  2567. %    \begin{macrocode}
  2568. FUNCTION {mastersthesis}
  2569. { output.bibitem
  2570.   format.authors "author" output.check
  2571. %<ay>  author format.key output
  2572. %<dt-beg>  format.date "year" output.check
  2573. %<!blk-com&!blk-tit>  new.block
  2574. %<!thtit-a>  format.btitle "title" output.check
  2575. %<thtit-a>  format.title "title" output.check
  2576. %<!blk-com&!blk-tit>  new.block
  2577. %<blk-tit>  new.sentence
  2578.   bbl.mthesis format.thesis.type output.nonnull
  2579.   school "school" output.check
  2580.   address output
  2581. %<!dt-beg&!dt-end>  format.date "year" output.check
  2582. %<!blk-com&!blk-tit>  new.block
  2583.   note output
  2584. %<*!dt-beg&dt-end>
  2585. %<!blk-com&!blk-tit>  new.block 
  2586.   format.date "year" output.check
  2587. %</!dt-beg&dt-end>
  2588.   fin.entry
  2589. %    \end{macrocode}
  2590. % \end{macro}
  2591. %    \begin{macrocode}
  2592. FUNCTION {misc}
  2593. { output.bibitem
  2594.   format.authors output
  2595. %<ay>  author format.key output
  2596. %<ay&dt-beg>  format.date "year" output.check
  2597. %<!ay&dt-beg>  format.date output
  2598. %<*ay>
  2599. %<!blk-com&!blk-tit>  new.block
  2600.   format.title output
  2601. %<!blk-com&!blk-tit>  new.block
  2602. %<blk-tit>  new.sentence
  2603. %</ay>
  2604. %<*!ay>
  2605. %<!blk-com&!blk-tit>  title howpublished new.block.checkb
  2606.   format.title output
  2607. %<blk-tit>  new.sentence
  2608. %<!blk-com&!blk-tit>  howpublished new.block.checka
  2609. %</!ay>
  2610.   howpublished output
  2611. %<ay&!dt-beg&!dt-end>  format.date "year" output.check
  2612. %<!ay&!dt-beg&!dt-end>  format.date output
  2613. %<!blk-com&!blk-tit>  new.block
  2614.   note output
  2615. %<*ay&!dt-beg&dt-end>
  2616. %<!blk-com&!blk-tit>  new.block 
  2617.   format.date "year" output.check
  2618. %</ay&!dt-beg&dt-end>
  2619. %<*!ay&!dt-beg&dt-end>
  2620. %<!blk-com&!blk-tit>  new.block 
  2621.   format.date output
  2622. %</!ay&!dt-beg&dt-end>
  2623.   fin.entry
  2624. %    \end{macrocode}
  2625. % \begin{macro}{`phdthesis'}
  2626. % \changes{2.0}{1994 Feb 7}{Add {\tt thtit-a} to format thesis titles like
  2627. %         articles instead of books.}
  2628. % To format a doctoral thesis.
  2629. %    \begin{macrocode}
  2630. FUNCTION {phdthesis}
  2631. { output.bibitem
  2632.   format.authors "author" output.check
  2633. %<ay>  author format.key output
  2634. %<dt-beg>  format.date "year" output.check
  2635. %<!blk-com&!blk-tit>  new.block
  2636. %<!thtit-a>  format.btitle "title" output.check
  2637. %<thtit-a>  format.title "title" output.check
  2638. %<!blk-com&!blk-tit>  new.block
  2639. %<blk-tit>  new.sentence
  2640.   bbl.phdthesis format.thesis.type output.nonnull
  2641.   school "school" output.check
  2642.   address output
  2643. %<!dt-beg&!dt-end>  format.date "year" output.check
  2644. %<!blk-com&!blk-tit>  new.block
  2645.   note output
  2646. %<*!dt-beg&dt-end>
  2647. %<!blk-com&!blk-tit>  new.block 
  2648.   format.date "year" output.check
  2649. %</!dt-beg&dt-end>
  2650.   fin.entry
  2651. %    \end{macrocode}
  2652. % \end{macro}
  2653. %    \begin{macrocode}
  2654. %<*ay>
  2655. FUNCTION {proceedings}
  2656. { output.bibitem
  2657.   format.editors output
  2658.   editor format.key output
  2659. %<dt-beg>  format.date "year" output.check
  2660. %<!blk-com&!blk-tit>  new.block
  2661.   format.btitle "title" output.check
  2662.   format.bvolume output
  2663.   format.number.series output
  2664.   address output
  2665.   new.sentence
  2666.   organization output
  2667.   publisher output
  2668. %<!dt-beg&!dt-end>  format.date "year" output.check
  2669. %<!blk-com&!blk-tit>  new.block
  2670.   note output
  2671. %<*!dt-beg&dt-end>
  2672. %<!blk-com&!blk-tit>  new.block 
  2673.   format.date "year" output.check
  2674. %</!dt-beg&dt-end>
  2675.   fin.entry
  2676. %</ay>
  2677. %<*!ay>
  2678. FUNCTION {proceedings}
  2679. { output.bibitem
  2680.   editor empty$
  2681.     { organization output }
  2682.     { format.editors output.nonnull }
  2683.   if$
  2684. %<dt-beg>  format.date "year" output.check
  2685. %<!blk-com&!blk-tit>  new.block
  2686.   format.btitle "title" output.check
  2687.   format.bvolume output
  2688.   format.number.series output
  2689.   address empty$
  2690.     { editor empty$
  2691.         { publisher new.sentence.checka }
  2692.         { organization publisher new.sentence.checkb
  2693.           organization output
  2694.         }
  2695.       if$
  2696.       publisher output
  2697. %<!dt-beg&!dt-end>      format.date "year" output.check
  2698.     }
  2699.     { address output.nonnull
  2700. %<!dt-beg&!dt-end>      format.date "year" output.check
  2701.       new.sentence
  2702.       editor empty$
  2703.         'skip$
  2704.         { organization output }
  2705.       if$
  2706.       publisher output
  2707.     }
  2708.   if$
  2709. %<!blk-com&!blk-tit>  new.block
  2710.   note output
  2711. %<*!dt-beg&dt-end>
  2712. %<!blk-com&!blk-tit>  new.block 
  2713.   format.date "year" output.check
  2714. %</!dt-beg&dt-end>
  2715.   fin.entry
  2716. %</!ay>
  2717. FUNCTION {techreport}
  2718. { output.bibitem
  2719.   format.authors "author" output.check
  2720. %<ay>  author format.key output
  2721. %<dt-beg>  format.date "year" output.check
  2722. %<!blk-com&!blk-tit>  new.block
  2723.   format.title "title" output.check
  2724. %<!blk-com&!blk-tit>  new.block
  2725. %<blk-tit>  new.sentence
  2726.   format.tr.number output.nonnull
  2727.   institution "institution" output.check
  2728.   address output
  2729. %<!dt-beg&!dt-end>  format.date "year" output.check
  2730. %<!blk-com&!blk-tit>  new.block
  2731.   note output
  2732. %<*!dt-beg&dt-end>
  2733. %<!blk-com&!blk-tit>  new.block 
  2734.   format.date "year" output.check
  2735. %</!dt-beg&dt-end>
  2736.   fin.entry
  2737. FUNCTION {unpublished}
  2738. { output.bibitem
  2739.   format.authors "author" output.check
  2740. %<ay>  author format.key output
  2741. %<ay&dt-beg>  format.date "year" output.check
  2742. %<!ay&dt-beg>  format.date output
  2743. %<!blk-com&!blk-tit>  new.block
  2744.   format.title "title" output.check
  2745. %<!blk-com&!blk-tit>  new.block
  2746. %<blk-tit>  new.sentence
  2747.   note "note" output.check
  2748. %<*ay&!dt-beg&dt-end>
  2749. %<!blk-com&!blk-tit>  new.block 
  2750.   format.date "year" output.check
  2751. %</ay&!dt-beg&dt-end>
  2752. %<*!ay&!dt-beg&dt-end>
  2753. %<!blk-com&!blk-tit>  new.block 
  2754.   format.date output
  2755. %</!ay&!dt-beg&dt-end>
  2756.   fin.entry
  2757. FUNCTION {default.type} { misc }
  2758. %    \end{macrocode}
  2759. % \begin{macro}{`jan'}
  2760. % \changes{2.0}{1994 Jan 31}{Make the translations of the months
  2761. %          dependent on the selected language.}
  2762. % Abbreviations for the months are provided for use within the database 
  2763. % {\tt.bib} file. These are now made language dependent.
  2764. %^^A NEWLANGUAGE: take everything between %<*english> and %</english>
  2765. %^^A     copy it, change english to newlang, replace names of months
  2766. %    \begin{macrocode}
  2767. %<*english>
  2768. MACRO {jan} {"January"}
  2769. MACRO {feb} {"February"}
  2770. MACRO {mar} {"March"}
  2771. MACRO {apr} {"April"}
  2772. MACRO {may} {"May"}
  2773. MACRO {jun} {"June"}
  2774. MACRO {jul} {"July"}
  2775. MACRO {aug} {"August"}
  2776. MACRO {sep} {"September"}
  2777. MACRO {oct} {"October"}
  2778. MACRO {nov} {"November"}
  2779. MACRO {dec} {"December"}
  2780. %</english>
  2781. %<*babel>
  2782. MACRO {jan} {"\bbljan{}"}
  2783. MACRO {feb} {"\bblfeb{}"}
  2784. MACRO {mar} {"\bblmar{}"}
  2785. MACRO {apr} {"\bblapr{}"}
  2786. MACRO {may} {"\bblmay{}"}
  2787. MACRO {jun} {"\bbljun{}"}
  2788. MACRO {jul} {"\bbljul{}"}
  2789. MACRO {aug} {"\bblaug{}"}
  2790. MACRO {sep} {"\bblsep{}"}
  2791. MACRO {oct} {"\bbloct{}"}
  2792. MACRO {nov} {"\bblnov{}"}
  2793. MACRO {dec} {"\bbldec{}"}
  2794. %</babel>
  2795. %<*german>
  2796. MACRO {jan} {"Januar"}
  2797. MACRO {feb} {"Februar"}
  2798. MACRO {mar} {"M\qq{a}rz"}
  2799. MACRO {apr} {"April"}
  2800. MACRO {may} {"Mai"}
  2801. MACRO {jun} {"Juni"}
  2802. MACRO {jul} {"Juli"}
  2803. MACRO {aug} {"August"}
  2804. MACRO {sep} {"September"}
  2805. MACRO {oct} {"Oktober"}
  2806. MACRO {nov} {"November"}
  2807. MACRO {dec} {"Dezember"}
  2808. %</german>
  2809. %<*french>
  2810. MACRO {jan} {"janvier"}
  2811. MACRO {feb} {"f\'evrier"}
  2812. MACRO {mar} {"mars"}
  2813. MACRO {apr} {"avril"}
  2814. MACRO {may} {"mai"}
  2815. MACRO {jun} {"juin"}
  2816. MACRO {jul} {"juillet"}
  2817. MACRO {aug} {"ao\^ut"}
  2818. MACRO {sep} {"septembre"}
  2819. MACRO {oct} {"octobre"}
  2820. MACRO {nov} {"novembre"}
  2821. MACRO {dec} {"d\'ecembre"}
  2822. %</french>
  2823. %<*espo>
  2824. MACRO {jan} {"januaro"}
  2825. MACRO {feb} {"februaro"}
  2826. MACRO {mar} {"marto"}
  2827. MACRO {apr} {"aprilo"}
  2828. MACRO {may} {"majo"}
  2829. MACRO {jun} {"junio"}
  2830. MACRO {jul} {"julio"}
  2831. MACRO {aug} {"a\u{u}gusto"}
  2832. MACRO {sep} {"septembro"}
  2833. MACRO {oct} {"oktobro"}
  2834. MACRO {nov} {"novembro"}
  2835. MACRO {dec} {"decembro"}
  2836. %</espo>
  2837. %    \end{macrocode}
  2838. % \end{macro}
  2839. %    \begin{macrocode}
  2840. MACRO {acmcs} {"ACM Computing Surveys"}
  2841. MACRO {acta} {"Acta Informatica"}
  2842. MACRO {cacm} {"Communications of the ACM"}
  2843. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  2844. MACRO {ibmsj} {"IBM Systems Journal"}
  2845. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  2846. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  2847. MACRO {ieeetcad}
  2848.  {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  2849. MACRO {ipl} {"Information Processing Letters"}
  2850. MACRO {jacm} {"Journal of the ACM"}
  2851. MACRO {jcss} {"Journal of Computer and System Sciences"}
  2852. MACRO {scp} {"Science of Computer Programming"}
  2853. MACRO {sicomp} {"SIAM Journal on Computing"}
  2854. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  2855. MACRO {tods} {"ACM Transactions on Database Systems"}
  2856. MACRO {tog} {"ACM Transactions on Graphics"}
  2857. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  2858. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  2859. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  2860. MACRO {tcs} {"Theoretical Computer Science"}
  2861. %<*ay|!seq-no>
  2862. FUNCTION {sortify}
  2863. { purify$
  2864.   "l" change.case$
  2865. INTEGERS { len }
  2866. FUNCTION {chop.word}
  2867. { 's :=
  2868.   'len :=
  2869.   s #1 len substring$ =
  2870.     { s len #1 + global.max$ substring$ }
  2871.     's
  2872.   if$
  2873. %<*ay>
  2874. FUNCTION {format.lab.names}
  2875. { 's :=
  2876.   s #1 "{vv~}{ll}" format.name$
  2877.   s num.names$ duplicate$
  2878.   #2 >
  2879. %<!etal-it>    { pop$ " et~al." * }
  2880. %<etal-it>    { pop$ " " * "et~al." emphasize * }
  2881.     { #2 <
  2882.         'skip$
  2883.         { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  2884. %<!etal-it>            { " et~al." * }
  2885. %<etal-it>            { " " * "et~al." emphasize * }
  2886. %<!amper>            { bbl.and space.word * s #2 "{vv~}{ll}" format.name$ * }
  2887. %<amper>            { " \& " * s #2 "{vv~}{ll}" format.name$ * }
  2888.           if$
  2889.         }
  2890.       if$
  2891.     }
  2892.   if$
  2893. %<*har|cay>
  2894. FUNCTION {format.long.lab.names}
  2895. { 's :=
  2896.   #1 'nameptr :=
  2897.   s num.names$ 'numnames :=
  2898.   numnames 'namesleft :=
  2899.     { namesleft #0 > }
  2900.     { s nameptr 
  2901.       "{vv~}{ll}" format.name$ 't :=
  2902.       nameptr #1 >
  2903.         { 
  2904. %<*nmlm>
  2905. %<m1>          nameptr #2 =
  2906. %<m2>          nameptr #3 =
  2907. %<m3>          nameptr #4 =
  2908. %<m4>          nameptr #5 =
  2909. %<m5>          nameptr #6 =
  2910. %<x1>          numnames #1 > and
  2911. %<x2>          numnames #2 > and
  2912. %<x3>          numnames #3 > and
  2913. %<x4>          numnames #4 > and
  2914. %<x5>          numnames #5 > and
  2915. %<x6>          numnames #6 > and
  2916. %<x7>          numnames #7 > and
  2917. %<x8>          numnames #8 > and
  2918. %<x9>          numnames #9 > and
  2919.             { "others" 't :=
  2920.               #1 'namesleft := }
  2921.             'skip$
  2922.           if$
  2923. %</nmlm>
  2924.           namesleft #1 >
  2925.             { ", " * t * }
  2926.             {
  2927. %<and-com>              "," *
  2928. %<*!and-xcom&!and-com>
  2929.               numnames #2 >
  2930.                 { "," * }
  2931.                 'skip$
  2932.               if$
  2933. %</!and-xcom&!and-com>
  2934.               t "others" =
  2935. %<!etal-it>                { " et~al." * }
  2936. %<etal-it>                { " " * "et~al." emphasize * }
  2937. %<!amper>                { bbl.and space.word * t * }
  2938. %<amper>                { " \& " * t * }
  2939.               if$
  2940.             }
  2941.           if$
  2942.         }
  2943.         't
  2944.       if$
  2945.       nameptr #1 + 'nameptr :=
  2946.       namesleft #1 - 'namesleft :=
  2947.     }
  2948.   while$
  2949. %</har|cay>
  2950. FUNCTION {author.key.label}
  2951. { author empty$
  2952.     { key empty$
  2953.         { cite$ #1 #3 substring$ }
  2954.         'key 
  2955.       if$
  2956.     }
  2957.     { author format.lab.names }
  2958.   if$
  2959. FUNCTION {author.editor.key.label}
  2960. { author empty$
  2961.     { editor empty$
  2962.         { key empty$
  2963.             { cite$ #1 #3 substring$ }
  2964.             'key  
  2965.           if$
  2966.         }
  2967.         { editor format.lab.names }
  2968.       if$
  2969.     }
  2970.     { author format.lab.names }
  2971.   if$
  2972. FUNCTION {editor.key.label}
  2973. { editor empty$
  2974.     { key empty$
  2975.         { cite$ #1 #3 substring$ }
  2976.         'key 
  2977.       if$
  2978.     }
  2979.     { editor format.lab.names }
  2980.   if$
  2981. FUNCTION {calc.label}
  2982. { type$ "book" =
  2983.   type$ "inbook" =
  2984.     'author.editor.key.label
  2985.     { type$ "proceedings" =
  2986.         'editor.key.label
  2987.         'author.key.label
  2988.       if$
  2989.     }
  2990.   if$
  2991. %<lab-it>  emphasize
  2992. %<!(har|ast|cay|alk|cn)>  "("
  2993. %<har|ast|cay|alk|cn>  ", "
  2994.   year duplicate$ empty$
  2995.      { pop$ "????" }
  2996.      { purify$ #-1 #4 substring$ }
  2997.   if$
  2998.   'label :=
  2999. %<*har|cay|ast|cn>
  3000. FUNCTION {calc.short.label}
  3001. { type$ "book" =
  3002.   type$ "inbook" =
  3003.     'author.editor.key.label
  3004.     { type$ "proceedings" =
  3005.         'editor.key.label
  3006.         'author.key.label
  3007.       if$
  3008.     }
  3009.   if$
  3010. %<lab-it>  emphasize
  3011.   'label :=
  3012. %</har|cay|ast|cn>
  3013. %<*har|cay>
  3014. %    \end{macrocode}
  3015. % \begin{macro}{`calc.long.label'}
  3016. % \changes{1.1}{1993 Nov 12}{Add key labels to {\tt calc.long.label} and
  3017. %     get {\tt'author} and {\tt'editor} in right order when author
  3018. %     missing.}
  3019. % The long label is one with the complete author list, not abbreviated with
  3020. % {\em et al.} after two authors.
  3021. %    \begin{macrocode}
  3022. FUNCTION {calc.long.label}
  3023. { type$ "book" =
  3024.   type$ "inbook" =
  3025.     { author empty$
  3026.         'editor
  3027.         'author
  3028.     if$
  3029.     }
  3030.     { type$ "proceedings" =
  3031.         'editor.key.label
  3032.         'author.key.label
  3033.       if$
  3034.     }
  3035.   if$
  3036.   format.long.lab.names
  3037. %<lab-it>  emphasize
  3038.   'long.label :=
  3039. %    \end{macrocode}
  3040. % \end{macro}
  3041. %    \begin{macrocode}
  3042. %</har|cay>
  3043. %</ay>
  3044. FUNCTION {sort.format.names}
  3045. { 's :=
  3046.   #1 'nameptr :=
  3047.   s num.names$ 'numnames :=
  3048.   numnames 'namesleft :=
  3049.     { namesleft #0 > }
  3050.     { nameptr #1 >
  3051.         { "   " * }
  3052.         'skip$
  3053.       if$ 
  3054.       s nameptr 
  3055. %<!nm-init&!nm-rev&!nm-rev1&!nm-rv>      "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" 
  3056. %<nm-init|nm-rev|nm-rev1|nm-rv>      "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" 
  3057.       format.name$ 't := 
  3058.       nameptr numnames = t "others" = and
  3059.         { "et al" * }
  3060. %<*seq-lab>
  3061.         { numnames #2 > nameptr #2 = and
  3062.           { "zzzzzz" * #1 'namesleft := }
  3063.           { t sortify * }
  3064.         if$
  3065.         }
  3066. %</seq-lab>
  3067. %<!seq-lab>        { t sortify * }
  3068.       if$
  3069.       nameptr #1 + 'nameptr :=
  3070.       namesleft #1 - 'namesleft :=
  3071.     }
  3072.   while$
  3073. FUNCTION {sort.format.title}
  3074. { 't :=
  3075.   "A " #2
  3076.     "An " #3
  3077.       "The " #4 t chop.word
  3078.     chop.word
  3079.   chop.word
  3080.   sortify
  3081.   #1 global.max$ substring$
  3082. FUNCTION {author.sort}
  3083. { author empty$
  3084.     { key empty$
  3085.         { "to sort, need author or key in " cite$ * warning$
  3086.           ""
  3087.         }
  3088.         { key sortify }
  3089.       if$
  3090.     }
  3091.     { author sort.format.names }
  3092.   if$
  3093. FUNCTION {author.editor.sort}
  3094. { author empty$
  3095.     { editor empty$
  3096.         { key empty$
  3097.             { "to sort, need author, editor, or key in " cite$ * warning$
  3098.               ""
  3099.             }
  3100.             { key sortify }
  3101.           if$
  3102.         }
  3103.         { editor sort.format.names }
  3104.       if$
  3105.     }
  3106.     { author sort.format.names }
  3107.   if$
  3108. %<*ay>
  3109. FUNCTION {editor.sort}
  3110. { editor empty$
  3111.     { key empty$
  3112.         { "to sort, need editor or key in " cite$ * warning$
  3113.           ""
  3114.         }
  3115.         { key sortify }
  3116.       if$
  3117.     }
  3118.     { editor sort.format.names }
  3119.   if$
  3120. FUNCTION {presort}
  3121. { calc.label
  3122.   label sortify
  3123.   "    "
  3124.   type$ "book" =
  3125.   type$ "inbook" =
  3126.     'author.editor.sort
  3127.     { type$ "proceedings" =
  3128.         'editor.sort
  3129.         'author.sort
  3130.       if$
  3131.     }
  3132.   if$
  3133.   #1 entry.max$ substring$      
  3134.   'sort.label :=                
  3135.   sort.label                    
  3136.   "    "
  3137.   title field.or.null
  3138.   sort.format.title
  3139.   #1 entry.max$ substring$
  3140.   'sort.key$ :=
  3141. %</ay>
  3142. %</ay|!seq-no>
  3143. %<*!ay&!seq-no>
  3144. FUNCTION {author.organization.sort}
  3145. { author empty$
  3146.     { organization empty$
  3147.         { key empty$
  3148.             { "to sort, need author, organization, or key in " cite$ * warning$
  3149.               ""
  3150.             }
  3151.             { key sortify }
  3152.           if$
  3153.         }
  3154.         { "The " #4 organization chop.word sortify }
  3155.       if$
  3156.     }
  3157.     { author sort.format.names }
  3158.   if$
  3159. FUNCTION {editor.organization.sort}
  3160. { editor empty$
  3161.     { organization empty$
  3162.         { key empty$
  3163.             { "to sort, need editor, organization, or key in " cite$ * warning$
  3164.               ""
  3165.             }
  3166.             { key sortify }
  3167.           if$
  3168.         }
  3169.         { "The " #4 organization chop.word sortify }
  3170.       if$
  3171.     }
  3172.     { editor sort.format.names }
  3173.   if$
  3174. FUNCTION {presort}
  3175. { type$ "book" =
  3176.   type$ "inbook" =
  3177.     'author.editor.sort
  3178.     { type$ "proceedings" =
  3179.         'editor.organization.sort
  3180.         { type$ "manual" =
  3181.             'author.organization.sort
  3182.             'author.sort
  3183.           if$
  3184.         }
  3185.       if$
  3186.     }
  3187.   if$
  3188.   "    "
  3189.   year field.or.null sortify
  3190.   "    "
  3191.   title field.or.null
  3192.   sort.format.title
  3193.   #1 entry.max$ substring$
  3194.   'sort.key$ :=
  3195. %</!ay&!seq-no>
  3196. %<*(ay)|!seq-no>
  3197. ITERATE {presort}
  3198. SORT            
  3199. %</(ay)|!seq-no>
  3200. %<*ay>
  3201. STRINGS { last.label next.extra }       
  3202. INTEGERS { last.extra.num }             
  3203. FUNCTION {initialize.extra.label.stuff} 
  3204. { #0 int.to.chr$ 'last.label :=
  3205.   "" 'next.extra :=
  3206.   #0 'last.extra.num :=
  3207. FUNCTION {forward.pass}
  3208. { last.label label =
  3209.     { last.extra.num #1 + 'last.extra.num :=
  3210.       last.extra.num int.to.chr$ 'extra.label :=
  3211.     }
  3212.     { "a" chr.to.int$ 'last.extra.num :=
  3213.       "" 'extra.label :=
  3214.       label 'last.label :=
  3215.     }
  3216.   if$
  3217. FUNCTION {reverse.pass}
  3218. { next.extra "b" =
  3219.     { "a" 'extra.label := }
  3220.     'skip$
  3221.   if$
  3222.   extra.label 'next.extra :=
  3223. %<xlab-it>  extra.label emphasize 'extra.label :=
  3224. %<!(har|ast|cay|cn)>  label extra.label * 'label :=
  3225. EXECUTE {initialize.extra.label.stuff}
  3226. ITERATE {forward.pass}
  3227. REVERSE {reverse.pass}
  3228. FUNCTION {bib.sort.order}
  3229. { sort.label
  3230.   "    "
  3231.   year field.or.null sortify
  3232.   "    "
  3233.   title field.or.null
  3234.   sort.format.title
  3235.   #1 entry.max$ substring$
  3236.   'sort.key$ :=
  3237. %<har|cay|cn|ast>  calc.short.label
  3238. %<har|cay>  calc.long.label
  3239. ITERATE {bib.sort.order}
  3240. SORT            
  3241. %</ay>
  3242. %<*!ay>
  3243. STRINGS { longest.label }
  3244. INTEGERS { number.label longest.label.width }
  3245. FUNCTION {initialize.longest.label}
  3246. { "" 'longest.label :=
  3247.   #1 'number.label :=
  3248.   #0 'longest.label.width :=
  3249. FUNCTION {longest.label.pass}
  3250. %<*!ay&!cite>
  3251. { number.label int.to.str$ 'label :=
  3252.   number.label #1 + 'number.label :=
  3253. %</!ay&!cite>
  3254. %<!ay&cite>{ cite$ 'label := 
  3255.   label width$ longest.label.width >
  3256.     { label 'longest.label :=
  3257.       label width$ 'longest.label.width :=
  3258.     }
  3259.     'skip$
  3260.   if$
  3261. EXECUTE {initialize.longest.label}
  3262. ITERATE {longest.label.pass}
  3263. %</!ay>
  3264. %    \end{macrocode}
  3265. %^^A NEWLANGUAGE: if newlang needs the " character in any translation
  3266. %^^A     (as German needs it) then use \qq instead and reproduce the 
  3267. %^^A     line below starting with %<german>, replaced with %<newlang>
  3268. % \begin{macro}{`begin.bib'}
  3269. % \changes{2.0}{1994 Jan 31}{For {\tt german}, add the definition of 
  3270. %    {\tt\protect\bslash qq} to replace double-quote character.}
  3271. % \changes{2.0}{1994 Jan 31}{For {\tt babel}, read in file {\tt
  3272. %    babelbst.tex} in {\tt thebibliography} to define the word commands.}
  3273. % The function {\tt begin.bib} writes  the initial text to the {\tt.bbl}
  3274. % file. The most important matter here is that the {\tt thebibliography}
  3275. % environment is invoked. 
  3276. %    \begin{macrocode}
  3277. FUNCTION {begin.bib}
  3278. { preamble$ empty$                              
  3279.     'skip$
  3280.     { preamble$ write$ newline$ }
  3281.   if$
  3282. %<ay>  "\begin{thebibliography}{}" write$ newline$           
  3283. %<!ay>  "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
  3284. %<german>  "\let\qq=\" #34 int.to.chr$ * write$ newline$
  3285. %<babel>  "\input{babelbst.tex}" write$ newline$
  3286. EXECUTE {begin.bib}
  3287. %    \end{macrocode}
  3288. % \end{macro}
  3289. %    \begin{macrocode}
  3290. EXECUTE {init.state.consts}
  3291. ITERATE {call.type$}
  3292. FUNCTION {end.bib}
  3293. { newline$
  3294.   "\end{thebibliography}" write$ newline$
  3295. EXECUTE {end.bib}
  3296. %</!options&!bblbst>
  3297. %    \end{macrocode}
  3298. % \section{The File {\tt babelbst.tex} for English}
  3299. % The following contains the definitions for the {\tt babel} language
  3300. % selection as they apply to English. This file may be extracted with {\tt
  3301. % docstrip} and the options {\tt bblbst,english}.
  3302. %    \begin{macrocode}
  3303. %<*bblbst&english>
  3304.  % This is babelbst.tex for English.
  3305.  % It should serve as a model for other languages.
  3306.  % Alternatively, store it under a different name (e.g. englbst.tex)
  3307.  % and then \input it with a command in babelbst.tex.
  3308. \def\bbland{and}
  3309. \def\bbleditors{editors}        \def\bbleds{eds.}
  3310. \def\bbleditor{editor}          \def\bbled{ed.}
  3311. \def\bbledby{edited by}
  3312. \def\bbledition{edition}        \def\bbledn{edn.}
  3313. \def\bblVolume{Volume}          \def\bblVol{Vol.}
  3314. \def\bblvolume{volume}          \def\bblvol{vol.}
  3315. \def\bblof{of}
  3316. \def\bblNumber{Number}          \def\bblNo{No.}
  3317. \def\bblnumber{number}          \def\bblno{no.}
  3318. \def\bblin{in}                  \def\bblIn{In}
  3319. \def\bblpages{pages}            \def\bblpp{pp.}
  3320. \def\bblpage{page}              \def\bblp{p.}
  3321. \def\bblchapter{chapter}        \def\bblchap{chap.}
  3322. \def\bbltechreport{Technical Report}
  3323. \def\bbltechrep{Tech. Rep.}
  3324. \def\bblmthesis{Master's Thesis}
  3325. \def\bblphdthesis{Ph.D. Thesis}
  3326. \def\bblfirst{First}            \def\bblfirsto{1st}
  3327. \def\bblsecond{Second}          \def\bblsecondo{2nd}
  3328. \def\bblthird{Third}            \def\bblthirdo{3rd}
  3329. \def\bblfourth{Fourth}          \def\bblfourtho{4th}
  3330. \def\bblfifth{Fifth}            \def\bblfiftho{5th}
  3331. \def\bblst{st}  \def\bblnd{nd}  \def\bblrd{rd}
  3332. \def\bblth{th}
  3333. \def\bbljan{January}  \def\bblfeb{February}  \def\bblmar{March}
  3334. \def\bblapr{April}    \def\bblmay{May}       \def\bbljun{June}
  3335. \def\bbljul{July}     \def\bblaug{August}    \def\bblsep{September}
  3336. \def\bbloct{October}  \def\bblnov{November}  \def\bbldec{December}
  3337. %</bblbst&english>
  3338. %    \end{macrocode}
  3339. % \section{The File {\tt babelbst.tex} for German}
  3340. % The following contains the definitions for the {\tt babel} language
  3341. % selection as they apply to German. This file may be extracted with {\tt
  3342. % docstrip} and the options {\tt bblbst,german}.
  3343. %    \begin{macrocode}
  3344. %<*bblbst&german>
  3345.  % This is babelbst.tex for German.
  3346.  % It should serve as a model for other languages.
  3347.  % Alternatively, store it under a different name (e.g. germbst.tex)
  3348.  % and then \input it with a command in babelbst.tex.
  3349. \def\bbland{und}
  3350. \def\bbleditors{Redakteure}     \def\bbleds{Red.}
  3351. \def\bbleditor{Redakteur}       \def\bbled{Red.}
  3352. \def\bbledby{herausgegeben von} 
  3353. \def\bbledition{Auflage}        \def\bbledn{Aufl.}
  3354. \def\bblVolume{Band}            \def\bblVol{Bd.}
  3355. \def\bblvolume{Band}            \def\bblvol{Bd.}
  3356. \def\bblof{von}
  3357. \def\bblNumber{Nummer}          \def\bblNo{No.}
  3358. \def\bblnumber{Nummer}          \def\bblno{No.}
  3359. \def\bblin{in}                  \def\bblIn{In}
  3360. \def\bblpages{Seiten}           \def\bblpp{S.}
  3361. \def\bblpage{Seite}             \def\bblp{S.}
  3362. \def\bblchapter{Kapitel}        \def\bblchap{Kap.}
  3363. \def\bbltechreport{Technischer Bericht}
  3364. \def\bbltechrep{Tech. Ber.}
  3365. \def\bblmthesis{Diplomarbeit}
  3366. \def\bblphdthesis{Doktorarbeit}
  3367. \def\bblfirst{Erste}            \def\bblfirsto{1.}
  3368. \def\bblsecond{Zweite}          \def\bblsecondo{2.}
  3369. \def\bblthird{Dritte}           \def\bblthirdo{3.}
  3370. \def\bblfourth{Vierte}          \def\bblfourtho{4.}
  3371. \def\bblfifth{F\"unfte}         \def\bblfiftho{5.}
  3372. \def\bblst{.}  \def\bblnd{.}  \def\bblrd{.}
  3373. \def\bblth{.}
  3374. \def\bbljan{Januar}  \def\bblfeb{Februar}  \def\bblmar{M\"arz}
  3375. \def\bblapr{April}   \def\bblmay{Mai}      \def\bbljun{Juni}
  3376. \def\bbljul{Juli}    \def\bblaug{August}   \def\bblsep{September}
  3377. \def\bbloct{Oktober} \def\bblnov{November} \def\bbldec{Dezember}
  3378. %</bblbst&german>
  3379. %    \end{macrocode}
  3380. % \section{The File {\tt babelbst.tex} for French}
  3381. % The following contains the definitions for the {\tt babel} language
  3382. % selection as they apply to French. This file may be extracted with {\tt
  3383. % docstrip} and the option {\tt bblbst,french}.
  3384. %    \begin{macrocode}
  3385. %<*bblbst&french>
  3386.  % This is babelbst.tex for French.
  3387.  % It should serve as a model for other languages.
  3388.  % Alternatively, store it under a different name (e.g. frnchbst.tex)
  3389.  % and then \input it with a command in babelbst.tex.
  3390. \def\bbland{et}
  3391. \def\bbleditors{r\'edacteurs}   \def\bbleds{r\'eds.}
  3392. \def\bbleditor{r\'edacteur}     \def\bbled{r\'ed.}
  3393. \def\bbledby{edit\'e par}
  3394. \def\bbledition{\'edition}      \def\bbledn{\'edn.}
  3395. \def\bblVolume{Tome}            \def\bblVol{Tm.}
  3396. \def\bblvolume{tome}            \def\bblvol{tm.}
  3397. \def\bblof{de}
  3398. \def\bblNumber{Num\'ero}        \def\bblNo{No.}
  3399. \def\bblnumber{num\'ero}        \def\bblno{no.}
  3400. \def\bblin{dans}                \def\bblIn{Dans}
  3401. \def\bblpages{pages}            \def\bblpage{pp.}
  3402. \def\bblpage{page}              \def\bblp{p.}
  3403. \def\bblchapter{chapitre}       \def\bblchap{chap.}
  3404. \def\bbltechrep{Rapport technique}
  3405. \def\bbltechrep{Rap. tech.}
  3406. \def\bblmthesis{Th\`ese de Ma\^itre}
  3407. \def\bblphdthesis{Th\`ese de Doctorat}
  3408. \def\bblfirst{Premi\`ere}   \def\bblfirsto{1$^{\mbox{\scriptsize re}}$}
  3409. \def\bblsecond{Deuxi\`eme}  \def\bblsecondo{2\bblth}
  3410. \def\bblthird{Troisi\`eme}  \def\bblthirdo{3\bblth}
  3411. \def\bblfourth{Quatri\`eme} \def\bblfourtho{4\bblth}
  3412. \def\bblfifth{Cinqui\`eme}  \def\bblfiftho{5\bblth}
  3413. \def\bblst{\bblth} \def\bblnd{\bblth} \def\bblrd{\bblth}
  3414. \def\bblth{$^{\mbox{\scriptsize e}}$}
  3415. \def\bbljan{janvier} \def\bblfeb{f\'evrier}  \def\bblmar{mars}
  3416. \def\bblapr{avril}   \def\bblmay{mai}        \def\bbljun{juin}
  3417. \def\bbljul{juillet} \def\bblaug{ao\^ut}     \def\bblsep{septembre}
  3418. \def\bbloct{octobre} \def\bblnov{novembre}   \def\bbldec{d\'ecembre}
  3419. %</bblbst&french>
  3420. %    \end{macrocode}
  3421. % \PrintChanges
  3422. % \Finale
  3423.